Home | History | Annotate | Download | only in obj
      1 // Inferno utils/5c/list.c
      2 // http://code.google.com/p/inferno-os/source/browse/utils/5c/list.c
      3 //
      4 //	Copyright  1994-1999 Lucent Technologies Inc.  All rights reserved.
      5 //	Portions Copyright  1995-1997 C H Forsyth (forsyth (a] terzarima.net)
      6 //	Portions Copyright  1997-1999 Vita Nuova Limited
      7 //	Portions Copyright  2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com)
      8 //	Portions Copyright  2004,2006 Bruce Ellis
      9 //	Portions Copyright  2005-2007 C H Forsyth (forsyth (a] terzarima.net)
     10 //	Revisions Copyright  2000-2007 Lucent Technologies Inc. and others
     11 //	Portions Copyright  2009 The Go Authors.  All rights reserved.
     12 //
     13 // Permission is hereby granted, free of charge, to any person obtaining a copy
     14 // of this software and associated documentation files (the "Software"), to deal
     15 // in the Software without restriction, including without limitation the rights
     16 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     17 // copies of the Software, and to permit persons to whom the Software is
     18 // furnished to do so, subject to the following conditions:
     19 //
     20 // The above copyright notice and this permission notice shall be included in
     21 // all copies or substantial portions of the Software.
     22 //
     23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     24 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     25 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
     26 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     27 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     28 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     29 // THE SOFTWARE.
     30 
     31 package obj
     32 
     33 // Copyright 2013 The Go Authors.  All rights reserved.
     34 // Use of this source code is governed by a BSD-style
     35 // license that can be found in the LICENSE file.
     36 
     37 // This file defines the IDs for PCDATA and FUNCDATA instructions
     38 // in Go binaries. It is included by assembly sources, so it must
     39 // be written using #defines.
     40 //
     41 // The Go compiler also #includes this file, for now.
     42 //
     43 // symtab.go also contains a copy of these constants.
     44 
     45 // Pseudo-assembly statements.
     46 
     47 // GO_ARGS, GO_RESULTS_INITIALIZED, and NO_LOCAL_POINTERS are macros
     48 // that communicate to the runtime information about the location and liveness
     49 // of pointers in an assembly function's arguments, results, and stack frame.
     50 // This communication is only required in assembly functions that make calls
     51 // to other functions that might be preempted or grow the stack.
     52 // NOSPLIT functions that make no calls do not need to use these macros.
     53 
     54 // GO_ARGS indicates that the Go prototype for this assembly function
     55 // defines the pointer map for the function's arguments.
     56 // GO_ARGS should be the first instruction in a function that uses it.
     57 // It can be omitted if there are no arguments at all.
     58 // GO_ARGS is inserted implicitly by the linker for any function
     59 // that also has a Go prototype and therefore is usually not necessary
     60 // to write explicitly.
     61 
     62 // GO_RESULTS_INITIALIZED indicates that the assembly function
     63 // has initialized the stack space for its results and that those results
     64 // should be considered live for the remainder of the function.
     65 
     66 // NO_LOCAL_POINTERS indicates that the assembly function stores
     67 // no pointers to heap objects in its local stack variables.
     68 
     69 // ArgsSizeUnknown is set in Func.argsize to mark all functions
     70 // whose argument size is unknown (C vararg functions, and
     71 // assembly code without an explicit specification).
     72 // This value is generated by the compiler, assembler, or linker.
     73 const (
     74 	PCDATA_StackMapIndex       = 0
     75 	FUNCDATA_ArgsPointerMaps   = 0
     76 	FUNCDATA_LocalsPointerMaps = 1
     77 	FUNCDATA_DeadValueMaps     = 2
     78 	ArgsSizeUnknown            = -0x80000000
     79 )
     80