go segment 源码

2022-07-15 浏览 (864)

golang segment 代码

文件路径:/src/cmd/link/internal/sym/segment.go

/ Inferno utils/8l/asm.c
/ https://bitbucket.org/inferno-os/inferno-os/src/master/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.

package sym

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

type Segment struct {
	Rwx      uint8  / permission as usual unix bits (5 = r-x etc)
	Vaddr    uint64 / virtual address
	Length   uint64 / length in memory
	Fileoff  uint64 / file offset
	Filelen  uint64 / length on disk
	Sections []*Section
}

type Section struct {
	Rwx     uint8
	Extnum  int16
	Align   int32
	Name    string
	Vaddr   uint64
	Length  uint64
	Seg     *Segment
	Elfsect interface{} / an *ld.ElfShdr
	Reloff  uint64
	Rellen  uint64
	/ Relcount is the number of *host* relocations applied to this section
	/ (when external linking).
	/ Incremented atomically on multiple goroutines.
	/ Note: this may differ from number of Go relocations, as one Go relocation
	/ may turn into multiple host relocations.
	Relcount uint32
	Sym      LoaderSym / symbol for the section, if any
	Index    uint16    / each section has a unique index, used internally

	Compressed bool
}

相关信息

go 源码目录

相关文章

go compilation_unit 源码

go library 源码

go reloc 源码

go symbol 源码

go symkind 源码

go symkind_string 源码

^