...

Source file src/pkg/cmd/internal/objabi/head.go

     1	// Derived from Inferno utils/6l/l.h and related files.
     2	// https://bitbucket.org/inferno-os/inferno-os/src/default/utils/6l/l.h
     3	//
     4	//	Copyright © 1994-1999 Lucent Technologies Inc.  All rights reserved.
     5	//	Portions Copyright © 1995-1997 C H Forsyth (forsyth@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@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 objabi
    32	
    33	import "fmt"
    34	
    35	// HeadType is the executable header type.
    36	type HeadType uint8
    37	
    38	const (
    39		Hunknown HeadType = iota
    40		Hdarwin
    41		Hdragonfly
    42		Hfreebsd
    43		Hjs
    44		Hlinux
    45		Hnacl
    46		Hnetbsd
    47		Hopenbsd
    48		Hplan9
    49		Hsolaris
    50		Hwindows
    51		Haix
    52	)
    53	
    54	func (h *HeadType) Set(s string) error {
    55		switch s {
    56		case "aix":
    57			*h = Haix
    58		case "darwin":
    59			*h = Hdarwin
    60		case "dragonfly":
    61			*h = Hdragonfly
    62		case "freebsd":
    63			*h = Hfreebsd
    64		case "js":
    65			*h = Hjs
    66		case "linux", "android":
    67			*h = Hlinux
    68		case "nacl":
    69			*h = Hnacl
    70		case "netbsd":
    71			*h = Hnetbsd
    72		case "openbsd":
    73			*h = Hopenbsd
    74		case "plan9":
    75			*h = Hplan9
    76		case "illumos", "solaris":
    77			*h = Hsolaris
    78		case "windows":
    79			*h = Hwindows
    80		default:
    81			return fmt.Errorf("invalid headtype: %q", s)
    82		}
    83		return nil
    84	}
    85	
    86	func (h *HeadType) String() string {
    87		switch *h {
    88		case Haix:
    89			return "aix"
    90		case Hdarwin:
    91			return "darwin"
    92		case Hdragonfly:
    93			return "dragonfly"
    94		case Hfreebsd:
    95			return "freebsd"
    96		case Hjs:
    97			return "js"
    98		case Hlinux:
    99			return "linux"
   100		case Hnacl:
   101			return "nacl"
   102		case Hnetbsd:
   103			return "netbsd"
   104		case Hopenbsd:
   105			return "openbsd"
   106		case Hplan9:
   107			return "plan9"
   108		case Hsolaris:
   109			return "solaris"
   110		case Hwindows:
   111			return "windows"
   112		}
   113		return fmt.Sprintf("HeadType(%d)", *h)
   114	}
   115	

View as plain text