diff --git a/buildid/note.go b/buildid/note.go index 24133bc..dc89967 100644 --- a/buildid/note.go +++ b/buildid/note.go @@ -82,15 +82,19 @@ var elfGNUNote = []byte("GNU\x00") func readELF(name string, f *os.File, data []byte) (buildid string, err error) { // Assume the note content is in the data, already read. // Rewrite the ELF header to set shnum to 0, so that we can pass + // Rewrite the ELF header to set shoff and shnum to 0, so that we can pass // the data to elf.NewFile and it will decode the Prog list but not // try to read the section headers and the string table from disk. // That's a waste of I/O when all we care about is the Prog list // and the one ELF note. switch elf.Class(data[elf.EI_CLASS]) { case elf.ELFCLASS32: + data[32], data[33], data[34], data[35] = 0, 0, 0, 0 data[48] = 0 data[49] = 0 case elf.ELFCLASS64: + data[40], data[41], data[42], data[43] = 0, 0, 0, 0 + data[44], data[45], data[46], data[47] = 0, 0, 0, 0 data[60] = 0 data[61] = 0 } diff --git a/buildinfo/buildinfo.go b/buildinfo/buildinfo.go index 2140f98..0128435 100644 --- a/buildinfo/buildinfo.go +++ b/buildinfo/buildinfo.go @@ -161,7 +161,7 @@ func readRawBuildInfo(r io.ReaderAt) (vers, mod string, err error) { data = data[i:] break } - data = data[(i+buildInfoAlign-1)&^buildInfoAlign:] + data = data[(i+buildInfoAlign-1)&^(buildInfoAlign-1):] } // Decode the blob. @@ -189,8 +189,10 @@ func readRawBuildInfo(r io.ReaderAt) (vers, mod string, err error) { var readPtr func([]byte) uint64 if ptrSize == 4 { readPtr = func(b []byte) uint64 { return uint64(bo.Uint32(b)) } - } else { + } else if ptrSize == 8 { readPtr = bo.Uint64 + } else { + return "", "", errNotGoExe } vers = readString(x, ptrSize, readPtr, readPtr(data[16:])) mod = readString(x, ptrSize, readPtr, readPtr(data[16+ptrSize:])) diff --git a/debug/dwarf/buf.go b/debug/dwarf/buf.go index c3822a0..7ac53ef 100644 --- a/debug/dwarf/buf.go +++ b/debug/dwarf/buf.go @@ -67,7 +67,7 @@ func (b *buf) uint8() uint8 { } func (b *buf) bytes(n int) []byte { - if len(b.data) < n { + if n < 0 || len(b.data) < n { b.error("underflow") return nil } diff --git a/debug/dwarf/const.go b/debug/dwarf/const.go index c607091..c0a74b0 100644 --- a/debug/dwarf/const.go +++ b/debug/dwarf/const.go @@ -427,7 +427,7 @@ const ( lneSetDiscriminator = 4 ) -// Line table directory directory and file name entry formats. +// Line table directory and file name entry formats. // These are new in DWARF 5. const ( lnctPath = 0x01 diff --git a/debug/dwarf/entry.go b/debug/dwarf/entry.go index bc05d7e..5bb4297 100644 --- a/debug/dwarf/entry.go +++ b/debug/dwarf/entry.go @@ -13,6 +13,7 @@ package dwarf import ( "encoding/binary" "errors" + "fmt" "strconv" ) @@ -33,7 +34,7 @@ type afield struct { // a map from entry format ids to their descriptions type abbrevTable map[uint32]abbrev -// ParseAbbrev returns the abbreviation table that starts at byte off +// parseAbbrev returns the abbreviation table that starts at byte off // in the .debug_abbrev section. func (d *Data) parseAbbrev(off uint64, vers int) (abbrevTable, error) { if m, ok := d.abbrevCache[off]; ok { @@ -241,27 +242,27 @@ type Entry struct { // A value can be one of several "attribute classes" defined by DWARF. // The Go types corresponding to each class are: // -// DWARF class Go type Class -// ----------- ------- ----- -// address uint64 ClassAddress -// block []byte ClassBlock -// constant int64 ClassConstant -// flag bool ClassFlag -// reference -// to info dwarf.Offset ClassReference -// to type unit uint64 ClassReferenceSig -// string string ClassString -// exprloc []byte ClassExprLoc -// lineptr int64 ClassLinePtr -// loclistptr int64 ClassLocListPtr -// macptr int64 ClassMacPtr -// rangelistptr int64 ClassRangeListPtr +// DWARF class Go type Class +// ----------- ------- ----- +// address uint64 ClassAddress +// block []byte ClassBlock +// constant int64 ClassConstant +// flag bool ClassFlag +// reference +// to info dwarf.Offset ClassReference +// to type unit uint64 ClassReferenceSig +// string string ClassString +// exprloc []byte ClassExprLoc +// lineptr int64 ClassLinePtr +// loclistptr int64 ClassLocListPtr +// macptr int64 ClassMacPtr +// rangelistptr int64 ClassRangeListPtr // // For unrecognized or vendor-defined attributes, Class may be // ClassUnknown. type Field struct { Attr Attr - Val interface{} + Val any Class Class } @@ -317,7 +318,7 @@ const ( // the "mac" section. ClassMacPtr - // ClassMacPtr represents values that are an int64 offset into + // ClassRangeListPtr represents values that are an int64 offset into // the "rangelist" section. ClassRangeListPtr @@ -355,7 +356,7 @@ const ( // into the "loclists" section. ClassLocList - // ClassRngList represents values that are an int64 offset + // ClassRngList represents values that are a uint64 offset // from the base of the "rnglists" section. ClassRngList @@ -380,9 +381,9 @@ func (i Class) GoString() string { // // 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{} { +// v, ok := e.Val(AttrSibling).(int64) +func (e *Entry) Val(a Attr) any { if f := e.AttrField(a); f != nil { return f.Val } @@ -423,6 +424,76 @@ func (b *buf) entry(cu *Entry, atab abbrevTable, ubase Offset, vers int) *Entry Children: a.children, Field: make([]Field, len(a.field)), } + + // If we are currently parsing the compilation unit, + // we can't evaluate Addrx or Strx until we've seen the + // relevant base entry. + type delayed struct { + idx int + off uint64 + fmt format + } + var delay []delayed + + resolveStrx := func(strBase, off uint64) string { + off += strBase + if uint64(int(off)) != off { + b.error("DW_FORM_strx offset out of range") + } + + b1 := makeBuf(b.dwarf, b.format, "str_offsets", 0, b.dwarf.strOffsets) + b1.skip(int(off)) + is64, _ := b.format.dwarf64() + if is64 { + off = b1.uint64() + } else { + off = uint64(b1.uint32()) + } + if b1.err != nil { + b.err = b1.err + return "" + } + if uint64(int(off)) != off { + b.error("DW_FORM_strx indirect offset out of range") + } + b1 = makeBuf(b.dwarf, b.format, "str", 0, b.dwarf.str) + b1.skip(int(off)) + val := b1.string() + if b1.err != nil { + b.err = b1.err + } + return val + } + + resolveRnglistx := func(rnglistsBase, off uint64) uint64 { + is64, _ := b.format.dwarf64() + if is64 { + off *= 8 + } else { + off *= 4 + } + off += rnglistsBase + if uint64(int(off)) != off { + b.error("DW_FORM_rnglistx offset out of range") + } + + b1 := makeBuf(b.dwarf, b.format, "rnglists", 0, b.dwarf.rngLists) + b1.skip(int(off)) + if is64 { + off = b1.uint64() + } else { + off = uint64(b1.uint32()) + } + if b1.err != nil { + b.err = b1.err + return 0 + } + if uint64(int(off)) != off { + b.error("DW_FORM_rnglistx indirect offset out of range") + } + return rnglistsBase + off + } + for i := range e.Field { e.Field[i].Attr = a.field[i].attr e.Field[i].Class = a.field[i].class @@ -431,7 +502,7 @@ func (b *buf) entry(cu *Entry, atab abbrevTable, ubase Offset, vers int) *Entry fmt = format(b.uint()) e.Field[i].Class = formToClass(fmt, a.field[i].attr, vers, b) } - var val interface{} + var val any switch fmt { default: b.error("unknown entry attr format 0x" + strconv.FormatInt(int64(fmt), 16)) @@ -467,10 +538,13 @@ func (b *buf) entry(cu *Entry, atab abbrevTable, ubase Offset, vers int) *Entry var addrBase int64 if cu != nil { addrBase, _ = cu.Val(AttrAddrBase).(int64) + } else if a.tag == TagCompileUnit { + delay = append(delay, delayed{i, off, formAddrx}) + break } var err error - val, err = b.dwarf.debugAddr(uint64(addrBase), off) + val, err = b.dwarf.debugAddr(b.format, uint64(addrBase), off) if err != nil { if b.err == nil { b.err = err @@ -568,6 +642,7 @@ func (b *buf) entry(cu *Entry, atab abbrevTable, ubase Offset, vers int) *Entry } else { if len(b.dwarf.lineStr) == 0 { b.error("DW_FORM_line_strp with no .debug_line_str section") + return nil } b1 = makeBuf(b.dwarf, b.format, "line_str", 0, b.dwarf.lineStr) } @@ -611,38 +686,16 @@ func (b *buf) entry(cu *Entry, atab abbrevTable, ubase Offset, vers int) *Entry // compilation unit. This won't work if the // program uses Reader.Seek to skip over the // unit. Not much we can do about that. + var strBase int64 if cu != nil { - cuOff, ok := cu.Val(AttrStrOffsetsBase).(int64) - if ok { - off += uint64(cuOff) - } + strBase, _ = cu.Val(AttrStrOffsetsBase).(int64) + } else if a.tag == TagCompileUnit { + delay = append(delay, delayed{i, off, formStrx}) + break } - if uint64(int(off)) != off { - b.error("DW_FORM_strx offset out of range") - } + val = resolveStrx(uint64(strBase), off) - b1 := makeBuf(b.dwarf, b.format, "str_offsets", 0, b.dwarf.strOffsets) - b1.skip(int(off)) - if is64 { - off = b1.uint64() - } else { - off = uint64(b1.uint32()) - } - if b1.err != nil { - b.err = b1.err - return nil - } - if uint64(int(off)) != off { - b.error("DW_FORM_strx indirect offset out of range") - } - b1 = makeBuf(b.dwarf, b.format, "str", 0, b.dwarf.str) - b1.skip(int(off)) - val = b1.string() - if b1.err != nil { - b.err = b1.err - return nil - } case formStrpSup: is64, known := b.format.dwarf64() if !known { @@ -687,17 +740,58 @@ func (b *buf) entry(cu *Entry, atab abbrevTable, ubase Offset, vers int) *Entry // rnglist case formRnglistx: - val = b.uint() + off := b.uint() + + // We have to adjust by the rnglists_base of + // the compilation unit. This won't work if + // the program uses Reader.Seek to skip over + // the unit. Not much we can do about that. + var rnglistsBase int64 + if cu != nil { + rnglistsBase, _ = cu.Val(AttrRnglistsBase).(int64) + } else if a.tag == TagCompileUnit { + delay = append(delay, delayed{i, off, formRnglistx}) + break + } + + val = resolveRnglistx(uint64(rnglistsBase), off) } + e.Field[i].Val = val } if b.err != nil { return nil } + + for _, del := range delay { + switch del.fmt { + case formAddrx: + addrBase, _ := e.Val(AttrAddrBase).(int64) + val, err := b.dwarf.debugAddr(b.format, uint64(addrBase), del.off) + if err != nil { + b.err = err + return nil + } + e.Field[del.idx].Val = val + case formStrx: + strBase, _ := e.Val(AttrStrOffsetsBase).(int64) + e.Field[del.idx].Val = resolveStrx(uint64(strBase), del.off) + if b.err != nil { + return nil + } + case formRnglistx: + rnglistsBase, _ := e.Val(AttrRnglistsBase).(int64) + e.Field[del.idx].Val = resolveRnglistx(uint64(rnglistsBase), del.off) + if b.err != nil { + return nil + } + } + } + return e } -// A Reader allows reading Entry structures from a DWARF ``info'' section. +// 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 @@ -714,7 +808,7 @@ type Reader struct { } // Reader returns a new Reader for Data. -// The reader is positioned at byte offset 0 in the DWARF ``info'' section. +// 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) @@ -877,10 +971,11 @@ func (r *Reader) SeekPC(pc uint64) (*Entry, error) { r.err = nil r.lastChildren = false r.unit = unit + r.cu = nil u := &r.d.unit[unit] r.b = makeBuf(r.d, u, "info", u.off, u.data) e, err := r.Next() - if err != nil { + if err != nil || e == nil || e.Tag == 0 { return nil, err } ranges, err := r.d.Ranges(e) @@ -946,11 +1041,18 @@ func (d *Data) Ranges(e *Entry) ([][2]uint64, error) { if err != nil { return nil, err } - return d.dwarf5Ranges(cu, base, ranges, ret) + return d.dwarf5Ranges(u, cu, base, ranges, ret) case ClassRngList: - // TODO: support DW_FORM_rnglistx - return ret, nil + rnglist, ok := field.Val.(uint64) + if !ok { + return ret, nil + } + cu, base, err := d.baseAddressForEntry(e) + if err != nil { + return nil, err + } + return d.dwarf5Ranges(u, cu, base, int64(rnglist), ret) default: return ret, nil @@ -1002,6 +1104,9 @@ func (d *Data) baseAddressForEntry(e *Entry) (*Entry, uint64, error) { } func (d *Data) dwarf2Ranges(u *unit, base uint64, ranges int64, ret [][2]uint64) ([][2]uint64, error) { + if ranges < 0 || ranges > int64(len(d.ranges)) { + return nil, fmt.Errorf("invalid range offset %d (max %d)", ranges, len(d.ranges)) + } buf := makeBuf(d, u, "ranges", Offset(ranges), d.ranges[ranges:]) for len(buf.data) > 0 { low := buf.addr() @@ -1021,15 +1126,18 @@ func (d *Data) dwarf2Ranges(u *unit, base uint64, ranges int64, ret [][2]uint64) return ret, nil } -// dwarf5Ranges interpets a debug_rnglists sequence, see DWARFv5 section +// dwarf5Ranges interprets a debug_rnglists sequence, see DWARFv5 section // 2.17.3 (page 53). -func (d *Data) dwarf5Ranges(cu *Entry, base uint64, ranges int64, ret [][2]uint64) ([][2]uint64, error) { +func (d *Data) dwarf5Ranges(u *unit, cu *Entry, base uint64, ranges int64, ret [][2]uint64) ([][2]uint64, error) { + if ranges < 0 || ranges > int64(len(d.rngLists)) { + return nil, fmt.Errorf("invalid rnglist offset %d (max %d)", ranges, len(d.ranges)) + } var addrBase int64 if cu != nil { addrBase, _ = cu.Val(AttrAddrBase).(int64) } - buf := makeBuf(d, d.rngLists, "rnglists", 0, d.rngLists.data) + buf := makeBuf(d, u, "rnglists", 0, d.rngLists) buf.skip(int(ranges)) for { opcode := buf.uint8() @@ -1043,7 +1151,7 @@ func (d *Data) dwarf5Ranges(cu *Entry, base uint64, ranges int64, ret [][2]uint6 case rleBaseAddressx: baseIdx := buf.uint() var err error - base, err = d.debugAddr(uint64(addrBase), baseIdx) + base, err = d.debugAddr(u, uint64(addrBase), baseIdx) if err != nil { return nil, err } @@ -1052,11 +1160,11 @@ func (d *Data) dwarf5Ranges(cu *Entry, base uint64, ranges int64, ret [][2]uint6 startIdx := buf.uint() endIdx := buf.uint() - start, err := d.debugAddr(uint64(addrBase), startIdx) + start, err := d.debugAddr(u, uint64(addrBase), startIdx) if err != nil { return nil, err } - end, err := d.debugAddr(uint64(addrBase), endIdx) + end, err := d.debugAddr(u, uint64(addrBase), endIdx) if err != nil { return nil, err } @@ -1065,7 +1173,7 @@ func (d *Data) dwarf5Ranges(cu *Entry, base uint64, ranges int64, ret [][2]uint6 case rleStartxLength: startIdx := buf.uint() len := buf.uint() - start, err := d.debugAddr(uint64(addrBase), startIdx) + start, err := d.debugAddr(u, uint64(addrBase), startIdx) if err != nil { return nil, err } @@ -1093,19 +1201,18 @@ func (d *Data) dwarf5Ranges(cu *Entry, base uint64, ranges int64, ret [][2]uint6 } // debugAddr returns the address at idx in debug_addr -func (d *Data) debugAddr(addrBase, idx uint64) (uint64, error) { - off := idx*uint64(d.addr.addrsize()) + addrBase +func (d *Data) debugAddr(format dataFormat, addrBase, idx uint64) (uint64, error) { + off := idx*uint64(format.addrsize()) + addrBase if uint64(int(off)) != off { return 0, errors.New("offset out of range") } - b := makeBuf(d, d.addr, "addr", 0, d.addr.data) + b := makeBuf(d, format, "addr", 0, d.addr) b.skip(int(off)) val := b.addr() if b.err != nil { return 0, b.err } - return val, nil } diff --git a/debug/dwarf/line.go b/debug/dwarf/line.go index c4937ca..4df4a17 100644 --- a/debug/dwarf/line.go +++ b/debug/dwarf/line.go @@ -152,7 +152,7 @@ func (d *Data) LineReader(cu *Entry) (*LineReader, error) { // cu has no line table. return nil, nil } - if off > int64(len(d.line)) { + if off < 0 || off > int64(len(d.line)) { return nil, errors.New("AttrStmtList value out of range") } // AttrCompDir is optional if all file names are absolute. Use @@ -215,7 +215,11 @@ func (r *LineReader) readHeader(compDir string) error { } else { headerLength = Offset(buf.uint32()) } - r.programOffset = buf.off + headerLength + programOffset := buf.off + headerLength + if programOffset > r.endOffset { + return DecodeError{"line", hdrOffset, fmt.Sprintf("malformed line table: program offset %d exceeds end offset %d", programOffset, r.endOffset)} + } + r.programOffset = programOffset r.minInstructionLength = int(buf.uint8()) if r.version >= 4 { // [DWARF4 6.2.4] diff --git a/debug/dwarf/open.go b/debug/dwarf/open.go index 617b8c5..994b726 100644 --- a/debug/dwarf/open.go +++ b/debug/dwarf/open.go @@ -2,9 +2,19 @@ // 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 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. + +# Security + +This package is not designed to be hardened against adversarial inputs, and is +outside the scope of https://go.dev/security/policy. In particular, only basic +validation is done when parsing object files. As such, care should be taken when +parsing untrusted inputs, as parsing malformed files may consume significant +resources, or cause panics. +*/ package dwarf import ( @@ -26,10 +36,10 @@ type Data struct { str []byte // New sections added in DWARF 5. - addr *debugAddr + addr []byte lineStr []byte strOffsets []byte - rngLists *rngLists + rngLists []byte // parsed data abbrevCache map[uint64]abbrevTable @@ -40,21 +50,6 @@ type Data struct { unit []unit } -// rngLists represents the contents of a debug_rnglists section (DWARFv5). -type rngLists struct { - is64 bool - asize uint8 - data []byte - ver uint16 -} - -// debugAddr represents the contents of a debug_addr section (DWARFv5). -type debugAddr struct { - is64 bool - asize uint8 - data []byte -} - var errSegmentSelector = errors.New("non-zero segment_selector size not supported") // New returns a new Data object initialized from the given parameters. @@ -132,76 +127,14 @@ func (d *Data) AddSection(name string, contents []byte) error { var err error switch name { case ".debug_addr": - d.addr, err = d.parseAddrHeader(contents) + d.addr = contents case ".debug_line_str": d.lineStr = contents case ".debug_str_offsets": d.strOffsets = contents case ".debug_rnglists": - d.rngLists, err = d.parseRngListsHeader(contents) + d.rngLists = contents } // Just ignore names that we don't yet support. return err } - -// parseRngListsHeader reads the header of a debug_rnglists section, see -// DWARFv5 section 7.28 (page 242). -func (d *Data) parseRngListsHeader(bytes []byte) (*rngLists, error) { - rngLists := &rngLists{data: bytes} - - buf := makeBuf(d, unknownFormat{}, "rnglists", 0, bytes) - _, rngLists.is64 = buf.unitLength() - - rngLists.ver = buf.uint16() // version - - rngLists.asize = buf.uint8() - segsize := buf.uint8() - if segsize != 0 { - return nil, errSegmentSelector - } - - // Header fields not read: offset_entry_count, offset table - - return rngLists, nil -} - -func (rngLists *rngLists) version() int { - return int(rngLists.ver) -} - -func (rngLists *rngLists) dwarf64() (bool, bool) { - return rngLists.is64, true -} - -func (rngLists *rngLists) addrsize() int { - return int(rngLists.asize) -} - -// parseAddrHeader reads the header of a debug_addr section, see DWARFv5 -// section 7.27 (page 241). -func (d *Data) parseAddrHeader(bytes []byte) (*debugAddr, error) { - addr := &debugAddr{data: bytes} - - buf := makeBuf(d, unknownFormat{}, "addr", 0, bytes) - _, addr.is64 = buf.unitLength() - - addr.asize = buf.uint8() - segsize := buf.uint8() - if segsize != 0 { - return nil, errSegmentSelector - } - - return addr, nil -} - -func (addr *debugAddr) version() int { - return 5 -} - -func (addr *debugAddr) dwarf64() (bool, bool) { - return addr.is64, true -} - -func (addr *debugAddr) addrsize() int { - return int(addr.asize) -} diff --git a/debug/dwarf/type.go b/debug/dwarf/type.go index 316db25..a95c4c7 100644 --- a/debug/dwarf/type.go +++ b/debug/dwarf/type.go @@ -33,10 +33,14 @@ func (c *CommonType) Size() int64 { return c.ByteSize } // Basic types // A BasicType holds fields common to all basic types. +// +// See the documentation for StructField for more info on the interpretation of +// the BitSize/BitOffset/DataBitOffset fields. type BasicType struct { CommonType - BitSize int64 - BitOffset int64 + BitSize int64 + BitOffset int64 + DataBitOffset int64 } func (b *BasicType) Basic() *BasicType { return b } @@ -150,13 +154,86 @@ type StructType struct { } // A StructField represents a field in a struct, union, or C++ class type. +// +// # Bit Fields +// +// The BitSize, BitOffset, and DataBitOffset fields describe the bit +// size and offset of data members declared as bit fields in C/C++ +// struct/union/class types. +// +// BitSize is the number of bits in the bit field. +// +// DataBitOffset, if non-zero, is the number of bits from the start of +// the enclosing entity (e.g. containing struct/class/union) to the +// start of the bit field. This corresponds to the DW_AT_data_bit_offset +// DWARF attribute that was introduced in DWARF 4. +// +// BitOffset, if non-zero, is the number of bits between the most +// significant bit of the storage unit holding the bit field to the +// most significant bit of the bit field. Here "storage unit" is the +// type name before the bit field (for a field "unsigned x:17", the +// storage unit is "unsigned"). BitOffset values can vary depending on +// the endianness of the system. BitOffset corresponds to the +// DW_AT_bit_offset DWARF attribute that was deprecated in DWARF 4 and +// removed in DWARF 5. +// +// At most one of DataBitOffset and BitOffset will be non-zero; +// DataBitOffset/BitOffset will only be non-zero if BitSize is +// non-zero. Whether a C compiler uses one or the other +// will depend on compiler vintage and command line options. +// +// Here is an example of C/C++ bit field use, along with what to +// expect in terms of DWARF bit offset info. Consider this code: +// +// struct S { +// int q; +// int j:5; +// int k:6; +// int m:5; +// int n:8; +// } s; +// +// For the code above, one would expect to see the following for +// DW_AT_bit_offset values (using GCC 8): +// +// Little | Big +// Endian | Endian +// | +// "j": 27 | 0 +// "k": 21 | 5 +// "m": 16 | 11 +// "n": 8 | 16 +// +// Note that in the above the offsets are purely with respect to the +// containing storage unit for j/k/m/n -- these values won't vary based +// on the size of prior data members in the containing struct. +// +// If the compiler emits DW_AT_data_bit_offset, the expected values +// would be: +// +// "j": 32 +// "k": 37 +// "m": 43 +// "n": 48 +// +// Here the value 32 for "j" reflects the fact that the bit field is +// preceded by other data members (recall that DW_AT_data_bit_offset +// values are relative to the start of the containing struct). Hence +// DW_AT_data_bit_offset values can be quite large for structs with +// many fields. +// +// DWARF also allow for the possibility of base types that have +// non-zero bit size and bit offset, so this information is also +// captured for base types, but it is worth noting that it is not +// possible to trigger this behavior using mainstream languages. type StructField struct { - Name string - Type Type - ByteOffset int64 - ByteSize int64 // usually zero; use Type.Size() for normal fields - BitOffset int64 // within the ByteSize bytes at ByteOffset - BitSize int64 // zero if not a bit field + Name string + Type Type + ByteOffset int64 + ByteSize int64 // usually zero; use Type.Size() for normal fields + BitOffset int64 + DataBitOffset int64 + BitSize int64 // zero if not a bit field } func (t *StructType) String() string { @@ -166,6 +243,13 @@ func (t *StructType) String() string { return t.Defn() } +func (f *StructField) bitOffset() int64 { + if f.BitOffset != 0 { + return f.BitOffset + } + return f.DataBitOffset +} + func (t *StructType) Defn() string { s := t.Kind if t.StructName != "" { @@ -184,7 +268,7 @@ func (t *StructType) Defn() string { s += "@" + strconv.FormatInt(f.ByteOffset, 10) if f.BitSize > 0 { s += " : " + strconv.FormatInt(f.BitSize, 10) - s += "@" + strconv.FormatInt(f.BitOffset, 10) + s += "@" + strconv.FormatInt(f.bitOffset(), 10) } } s += "}" @@ -287,16 +371,40 @@ type typeReader interface { AddressSize() int } -// Type reads the type at off in the DWARF ``info'' section. +// 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, nil) } +type typeFixer struct { + typedefs []*TypedefType + arraytypes []*Type +} + +func (tf *typeFixer) recordArrayType(t *Type) { + if t == nil { + return + } + _, ok := (*t).(*ArrayType) + if ok { + tf.arraytypes = append(tf.arraytypes, t) + } +} + +func (tf *typeFixer) apply() { + for _, t := range tf.typedefs { + t.Common().ByteSize = t.Type.Size() + } + for _, t := range tf.arraytypes { + zeroArray(t) + } +} + // readType reads a type from r at off of name. It adds types to the // type cache, appends new typedef types to typedefs, and computes the // sizes of types. Callers should pass nil for typedefs; this is used // for internal recursion. -func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Offset]Type, typedefs *[]*TypedefType) (Type, error) { +func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Offset]Type, fixups *typeFixer) (Type, error) { if t, ok := typeCache[off]; ok { return t, nil } @@ -311,18 +419,16 @@ func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Off } // If this is the root of the recursion, prepare to resolve - // typedef sizes once the recursion is done. This must be done - // after the type graph is constructed because it may need to - // resolve cycles in a different order than readType - // encounters them. - if typedefs == nil { - var typedefList []*TypedefType + // typedef sizes and perform other fixups once the recursion is + // done. This must be done after the type graph is constructed + // because it may need to resolve cycles in a different order than + // readType encounters them. + if fixups == nil { + var fixer typeFixer defer func() { - for _, t := range typedefList { - t.Common().ByteSize = t.Type.Size() - } + fixer.apply() }() - typedefs = &typedefList + fixups = &fixer } // Parse type from Entry. @@ -376,7 +482,7 @@ func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Off var t Type switch toff := tval.(type) { case Offset: - if t, err = d.readType(name, r.clone(), toff, typeCache, typedefs); err != nil { + if t, err = d.readType(name, r.clone(), toff, typeCache, fixups); err != nil { return nil } case uint64: @@ -447,8 +553,12 @@ func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Off // 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 + // AttrBitOffset: bit offset of value within containing storage unit + // AttrDataBitOffset: bit offset of value within containing storage unit + // AttrBitSize: size in bits + // + // For most languages BitOffset/DataBitOffset/BitSize will not be present + // for base types. name, _ := e.Val(AttrName).(string) enc, ok := e.Val(AttrEncoding).(int64) if !ok { @@ -494,7 +604,14 @@ func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Off }).Basic() t.Name = name t.BitSize, _ = e.Val(AttrBitSize).(int64) - t.BitOffset, _ = e.Val(AttrBitOffset).(int64) + haveBitOffset := false + haveDataBitOffset := false + t.BitOffset, haveBitOffset = e.Val(AttrBitOffset).(int64) + t.DataBitOffset, haveDataBitOffset = e.Val(AttrDataBitOffset).(int64) + if haveBitOffset && haveDataBitOffset { + err = DecodeError{name, e.Offset, "duplicate bit offset attributes"} + goto Error + } case TagClassType, TagStructType, TagUnionType: // Structure, union, or class type. (DWARF v2 §5.5) @@ -508,6 +625,7 @@ func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Off // AttrType: type of member [required] // AttrByteSize: size in bytes // AttrBitOffset: bit offset within bytes for bit fields + // AttrDataBitOffset: field bit offset relative to struct start // 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. @@ -526,7 +644,8 @@ func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Off t.Incomplete = e.Val(AttrDeclaration) != nil t.Field = make([]*StructField, 0, 8) var lastFieldType *Type - var lastFieldBitOffset int64 + var lastFieldBitSize int64 + var lastFieldByteOffset int64 for kid := next(); kid != nil; kid = next() { if kid.Tag != TagMember { continue @@ -553,30 +672,33 @@ func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Off f.ByteOffset = loc } - haveBitOffset := false f.Name, _ = kid.Val(AttrName).(string) f.ByteSize, _ = kid.Val(AttrByteSize).(int64) + haveBitOffset := false + haveDataBitOffset := false f.BitOffset, haveBitOffset = kid.Val(AttrBitOffset).(int64) + f.DataBitOffset, haveDataBitOffset = kid.Val(AttrDataBitOffset).(int64) + if haveBitOffset && haveDataBitOffset { + err = DecodeError{name, e.Offset, "duplicate bit offset attributes"} + goto Error + } 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" { + if lastFieldBitSize == 0 && lastFieldByteOffset == f.ByteOffset && 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) + fixups.recordArrayType(lastFieldType) } lastFieldType = &f.Type - lastFieldBitOffset = bito + lastFieldByteOffset = f.ByteOffset + lastFieldBitSize = f.BitSize } if t.Kind != "union" { b, ok := e.Val(AttrByteSize).(int64) - if ok && b*8 == lastFieldBitOffset { + if ok && b == lastFieldByteOffset { // Final field must be zero width. Fix array length. - zeroArray(lastFieldType) + fixups.recordArrayType(lastFieldType) } } @@ -719,7 +841,7 @@ func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Off // Record that we need to resolve this // type's size once the type graph is // constructed. - *typedefs = append(*typedefs, t) + fixups.typedefs = append(fixups.typedefs, t) case *PtrType: b = int64(addressSize) } @@ -737,11 +859,8 @@ Error: } func zeroArray(t *Type) { - if t == nil { - return - } - at, ok := (*t).(*ArrayType) - if !ok || at.Type.Size() == 0 { + at := (*t).(*ArrayType) + if at.Type.Size() == 0 { return } // Make a copy to avoid invalidating typeCache. diff --git a/debug/dwarf/unit.go b/debug/dwarf/unit.go index 29a744f..8b810d0 100644 --- a/debug/dwarf/unit.go +++ b/debug/dwarf/unit.go @@ -48,7 +48,9 @@ func (d *Data) parseUnits() ([]unit, error) { break } b.skip(int(len)) - nunit++ + if len > 0 { + nunit++ + } } if b.err != nil { return nil, b.err @@ -61,7 +63,12 @@ func (d *Data) parseUnits() ([]unit, error) { u := &units[i] u.base = b.off var n Offset - n, u.is64 = b.unitLength() + if b.err != nil { + return nil, b.err + } + for n == 0 { + n, u.is64 = b.unitLength() + } dataOff := b.off vers := b.uint16() if vers < 2 || vers > 5 { diff --git a/debug/elf/elf.go b/debug/elf/elf.go index 140a894..e99d42f 100644 --- a/debug/elf/elf.go +++ b/debug/elf/elf.go @@ -733,7 +733,7 @@ const ( ) var compressionStrings = []intName{ - {0, "COMPRESS_ZLIB"}, + {1, "COMPRESS_ZLIB"}, {0x60000000, "COMPRESS_LOOS"}, {0x6fffffff, "COMPRESS_HIOS"}, {0x70000000, "COMPRESS_LOPROC"}, diff --git a/debug/elf/file.go b/debug/elf/file.go index 5d7dc6c..c7d521d 100644 --- a/debug/elf/file.go +++ b/debug/elf/file.go @@ -18,6 +18,7 @@ import ( "strings" "github.com/mandiant/GoReSym/debug/dwarf" + "github.com/mandiant/GoReSym/saferio" ) // seekStart, seekCurrent, seekEnd are copies of @@ -325,6 +326,13 @@ func NewFile(r io.ReaderAt) (*File, error) { shstrndx = int(hdr.Shstrndx) } + if shoff < 0 { + return nil, &FormatError{0, "invalid shoff", shoff} + } + if phoff < 0 { + return nil, &FormatError{0, "invalid phoff", phoff} + } + if shoff == 0 && shnum != 0 { return nil, &FormatError{0, "invalid ELF shnum for shoff=0", shnum} } @@ -333,6 +341,19 @@ func NewFile(r io.ReaderAt) (*File, error) { return nil, &FormatError{0, "invalid ELF shstrndx", shstrndx} } + var wantPhentsize, wantShentsize int + switch f.Class { + case ELFCLASS32: + wantPhentsize = 8 * 4 + wantShentsize = 10 * 4 + case ELFCLASS64: + wantPhentsize = 2*4 + 6*8 + wantShentsize = 4*4 + 6*8 + } + if phnum > 0 && phentsize < wantPhentsize { + return nil, &FormatError{0, "invalid ELF phentsize", phentsize} + } + // Read program headers f.Progs = make([]*Prog, phnum) for i := 0; i < phnum; i++ { @@ -371,14 +392,74 @@ func NewFile(r io.ReaderAt) (*File, error) { Align: ph.Align, } } + if int64(p.Off) < 0 { + return nil, &FormatError{off, "invalid program header offset", p.Off} + } + if int64(p.Filesz) < 0 { + return nil, &FormatError{off, "invalid program header file size", p.Filesz} + } p.sr = io.NewSectionReader(r, int64(p.Off), int64(p.Filesz)) p.ReaderAt = p.sr f.Progs[i] = p } + // If the number of sections is greater than or equal to SHN_LORESERVE + // (0xff00), shnum has the value zero and the actual number of section + // header table entries is contained in the sh_size field of the section + // header at index 0. + if shoff > 0 && shnum == 0 { + var typ, link uint32 + sr.Seek(shoff, seekStart) + switch f.Class { + case ELFCLASS32: + sh := new(Section32) + if err := binary.Read(sr, f.ByteOrder, sh); err != nil { + return nil, err + } + shnum = int(sh.Size) + typ = sh.Type + link = sh.Link + case ELFCLASS64: + sh := new(Section64) + if err := binary.Read(sr, f.ByteOrder, sh); err != nil { + return nil, err + } + shnum = int(sh.Size) + typ = sh.Type + link = sh.Link + } + if SectionType(typ) != SHT_NULL { + return nil, &FormatError{shoff, "invalid type of the initial section", SectionType(typ)} + } + + if shnum < int(SHN_LORESERVE) { + return nil, &FormatError{shoff, "invalid ELF shnum contained in sh_size", shnum} + } + + // If the section name string table section index is greater than or + // equal to SHN_LORESERVE (0xff00), this member has the value + // SHN_XINDEX (0xffff) and the actual index of the section name + // string table section is contained in the sh_link field of the + // section header at index 0. + if shstrndx == int(SHN_XINDEX) { + shstrndx = int(link) + if shstrndx < int(SHN_LORESERVE) { + return nil, &FormatError{shoff, "invalid ELF shstrndx contained in sh_link", shstrndx} + } + } + } + + if shnum > 0 && shentsize < wantShentsize { + return nil, &FormatError{0, "invalid ELF shentsize", shentsize} + } + // Read section headers - f.Sections = make([]*Section, shnum) - names := make([]uint32, shnum) + c := saferio.SliceCap((*Section)(nil), uint64(shnum)) + if c < 0 { + return nil, &FormatError{0, "too many sections", shnum} + } + f.Sections = make([]*Section, 0, c) + names := make([]uint32, 0, c) for i := 0; i < shnum; i++ { off := shoff + int64(i)*int64(shentsize) sr.Seek(off, seekStart) @@ -389,7 +470,7 @@ func NewFile(r io.ReaderAt) (*File, error) { if err := binary.Read(sr, f.ByteOrder, sh); err != nil { return nil, err } - names[i] = sh.Name + names = append(names, sh.Name) s.SectionHeader = SectionHeader{ Type: SectionType(sh.Type), Flags: SectionFlag(sh.Flags), @@ -406,7 +487,7 @@ func NewFile(r io.ReaderAt) (*File, error) { if err := binary.Read(sr, f.ByteOrder, sh); err != nil { return nil, err } - names[i] = sh.Name + names = append(names, sh.Name) s.SectionHeader = SectionHeader{ Type: SectionType(sh.Type), Flags: SectionFlag(sh.Flags), @@ -419,6 +500,12 @@ func NewFile(r io.ReaderAt) (*File, error) { Entsize: sh.Entsize, } } + if int64(s.Offset) < 0 { + return nil, &FormatError{off, "invalid section offset", int64(s.Offset)} + } + if int64(s.FileSize) < 0 { + return nil, &FormatError{off, "invalid section size", int64(s.FileSize)} + } s.sr = io.NewSectionReader(r, int64(s.Offset), int64(s.FileSize)) if s.Flags&SHF_COMPRESSED == 0 { @@ -448,7 +535,7 @@ func NewFile(r io.ReaderAt) (*File, error) { } } - f.Sections[i] = s + f.Sections = append(f.Sections, s) } if len(f.Sections) == 0 { @@ -456,7 +543,16 @@ func NewFile(r io.ReaderAt) (*File, error) { } // Load section header string table. - shstrtab, err := f.Sections[shstrndx].Data() + if shstrndx == 0 { + // If the file has no section name string table, + // shstrndx holds the value SHN_UNDEF (0). + return f, nil + } + shstr := f.Sections[shstrndx] + if shstr.Type != SHT_STRTAB { + return nil, &FormatError{shoff + int64(shstrndx*shentsize), "invalid ELF section name string table type", shstr.Type} + } + shstrtab, err := shstr.Data() if err != nil { return nil, err } diff --git a/generatepackages.py b/generatepackages.py index f54e8f6..1e94d0c 100644 --- a/generatepackages.py +++ b/generatepackages.py @@ -1,37 +1,68 @@ # Python >= 3.6, tested with Python 3.9.5 import requests +auth_user = "" +auth_token = "" + # https://docs.github.com/en/rest/reference/git#get-a-tree -API_URL = "https://api.github.com/repos/golang/go/git/trees" +TREE_API_URL = "https://api.github.com/repos/golang/go/git/trees" +TAG_API_URL = "https://api.github.com/repos/golang/go/git/refs/tags" DIR = "src" OUTPUT_FILE = "stdpackages.go" VAR_NAME = "standardPackages" - def get_tree(tree_sha): - url = f"{API_URL}/{tree_sha}" + url = f"{TREE_API_URL}/{tree_sha}" print(f"Getting {url}") - r = requests.get(url) + r = requests.get(url, auth=(auth_user,auth_token)) r.raise_for_status() return r.json() +def remove_prefix(text, prefix): + return text[text.startswith(prefix) and len(prefix):] -r = get_tree("master") -for leaf in r["tree"]: - if leaf["path"] == DIR: - sha = leaf["sha"] - break +def get_go_tags(): + url = TAG_API_URL + print(f"Fetching version tags {url}") + r = requests.get(url, auth=(auth_user,auth_token)) + r.raise_for_status() + j = r.json() + + version_tags = ["master"] + for obj in j: + tag = remove_prefix(obj["ref"], "refs/tags/") + if "weekly" in tag: + continue + + version_tags.append(tag) + return version_tags -r = get_tree(f"{sha}?recursive=1") +def filter_path(path): + f = remove_prefix(path, "cmd/vendor/") + return f + +# enumerates all go version trees by tag (package paths have been re-ordered over time, so we must get all of them) +paths = [] +for tag in get_go_tags(): + r = get_tree(tag) + for leaf in r["tree"]: + if leaf["path"] == DIR: + sha = leaf["sha"] + break + + r = get_tree(f"{sha}?recursive=1") + + if r["truncated"]: + raise RuntimeError("Too many paths, needed to fetch one sub-tree at a time") + + # enumerates the file tree via directory + # Use list instead of set to keep order + new_paths = [filter_path(leaf["path"]) for leaf in r["tree"] if leaf["type"] == "tree"] + paths.extend(x for x in new_paths if x not in paths) + +print(f"Writing paths to {OUTPUT_FILE}") -if r["truncated"]: - raise RuntimeError("Too many paths, needed to fetch one sub-tree at a time") - -# Use list instead of set to keep order -paths = [leaf["path"] for leaf in r["tree"] if leaf["type"] == "tree"] # paths in the following format: {"path1", "path2", ...} paths_str = '{"' + '", "'.join(paths) + '"}' - -print(f"Writing paths to {OUTPUT_FILE}") with open(OUTPUT_FILE, "w") as f: f.write(f"package main\n\nvar {VAR_NAME} = []string{paths_str}") diff --git a/go.mod b/go.mod index 81379f0..0c959b3 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/mandiant/GoReSym -go 1.17 +go 1.20 require ( golang.org/x/arch v0.0.0-20201008161808-52c3e6f60cff diff --git a/saferio/io.go b/saferio/io.go new file mode 100644 index 0000000..66cc044 --- /dev/null +++ b/saferio/io.go @@ -0,0 +1,135 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package saferio provides I/O functions that avoid allocating large +// amounts of memory unnecessarily. This is intended for packages that +// read data from an [io.Reader] where the size is part of the input +// data but the input may be corrupt, or may be provided by an +// untrustworthy attacker. +package saferio + +import ( + "io" + "reflect" +) + +// chunk is an arbitrary limit on how much memory we are willing +// to allocate without concern. +const chunk = 10 << 20 // 10M + +// ReadData reads n bytes from the input stream, but avoids allocating +// all n bytes if n is large. This avoids crashing the program by +// allocating all n bytes in cases where n is incorrect. +// +// The error is io.EOF only if no bytes were read. +// If an io.EOF happens after reading some but not all the bytes, +// ReadData returns io.ErrUnexpectedEOF. +func ReadData(r io.Reader, n uint64) ([]byte, error) { + if int64(n) < 0 || n != uint64(int(n)) { + // n is too large to fit in int, so we can't allocate + // a buffer large enough. Treat this as a read failure. + return nil, io.ErrUnexpectedEOF + } + + if n < chunk { + buf := make([]byte, n) + _, err := io.ReadFull(r, buf) + if err != nil { + return nil, err + } + return buf, nil + } + + var buf []byte + buf1 := make([]byte, chunk) + for n > 0 { + next := n + if next > chunk { + next = chunk + } + _, err := io.ReadFull(r, buf1[:next]) + if err != nil { + if len(buf) > 0 && err == io.EOF { + err = io.ErrUnexpectedEOF + } + return nil, err + } + buf = append(buf, buf1[:next]...) + n -= next + } + return buf, nil +} + +// ReadDataAt reads n bytes from the input stream at off, but avoids +// allocating all n bytes if n is large. This avoids crashing the program +// by allocating all n bytes in cases where n is incorrect. +func ReadDataAt(r io.ReaderAt, n uint64, off int64) ([]byte, error) { + if int64(n) < 0 || n != uint64(int(n)) { + // n is too large to fit in int, so we can't allocate + // a buffer large enough. Treat this as a read failure. + return nil, io.ErrUnexpectedEOF + } + + if n < chunk { + buf := make([]byte, n) + _, err := r.ReadAt(buf, off) + if err != nil { + // io.SectionReader can return EOF for n == 0, + // but for our purposes that is a success. + if err != io.EOF || n > 0 { + return nil, err + } + } + return buf, nil + } + + var buf []byte + buf1 := make([]byte, chunk) + for n > 0 { + next := n + if next > chunk { + next = chunk + } + _, err := r.ReadAt(buf1[:next], off) + if err != nil { + return nil, err + } + buf = append(buf, buf1[:next]...) + n -= next + off += int64(next) + } + return buf, nil +} + +// SliceCap returns the capacity to use when allocating a slice. +// After the slice is allocated with the capacity, it should be +// built using append. This will avoid allocating too much memory +// if the capacity is large and incorrect. +// +// A negative result means that the value is always too big. +// +// The element type is described by passing a pointer to a value of that type. +// This would ideally use generics, but this code is built with +// the bootstrap compiler which need not support generics. +// We use a pointer so that we can handle slices of interface type. +func SliceCap(v any, c uint64) int { + if int64(c) < 0 || c != uint64(int(c)) { + return -1 + } + typ := reflect.TypeOf(v) + if typ.Kind() != reflect.Ptr { + panic("SliceCap called with non-pointer type") + } + size := uint64(typ.Elem().Size()) + if size > 0 && c > (1<<64-1)/size { + return -1 + } + if c*size > chunk { + c = uint64(chunk / size) + if c == 0 { + c = 1 + } + } + return int(c) +} diff --git a/stdpackages.go b/stdpackages.go index 82083bb..1bf0e0c 100644 --- a/stdpackages.go +++ b/stdpackages.go @@ -1,3 +1,3 @@ package main -var standardPackages = []string{"archive", "archive/tar", "archive/tar/testdata", "archive/zip", "archive/zip/testdata", "bufio", "builtin", "bytes", "cmd", "cmd/addr2line", "cmd/api", "cmd/api/testdata", "cmd/api/testdata/src", "cmd/api/testdata/src/issue21181", "cmd/api/testdata/src/issue21181/dep", "cmd/api/testdata/src/issue21181/indirect", "cmd/api/testdata/src/issue21181/p", "cmd/api/testdata/src/issue29837", "cmd/api/testdata/src/issue29837/p", "cmd/api/testdata/src/pkg", "cmd/api/testdata/src/pkg/p1", "cmd/api/testdata/src/pkg/p2", "cmd/api/testdata/src/pkg/p3", "cmd/api/testdata/src/pkg/p4", "cmd/asm", "cmd/asm/internal", "cmd/asm/internal/arch", "cmd/asm/internal/asm", "cmd/asm/internal/asm/testdata", "cmd/asm/internal/asm/testdata/avx512enc", "cmd/asm/internal/flags", "cmd/asm/internal/lex", "cmd/buildid", "cmd/cgo", "cmd/compile", "cmd/compile/internal", "cmd/compile/internal/abi", "cmd/compile/internal/amd64", "cmd/compile/internal/arm", "cmd/compile/internal/arm64", "cmd/compile/internal/base", "cmd/compile/internal/bitvec", "cmd/compile/internal/deadcode", "cmd/compile/internal/devirtualize", "cmd/compile/internal/dwarfgen", "cmd/compile/internal/escape", "cmd/compile/internal/gc", "cmd/compile/internal/importer", "cmd/compile/internal/importer/testdata", "cmd/compile/internal/importer/testdata/versions", "cmd/compile/internal/inline", "cmd/compile/internal/ir", "cmd/compile/internal/liveness", "cmd/compile/internal/logopt", "cmd/compile/internal/mips", "cmd/compile/internal/mips64", "cmd/compile/internal/noder", "cmd/compile/internal/objw", "cmd/compile/internal/pkginit", "cmd/compile/internal/ppc64", "cmd/compile/internal/reflectdata", "cmd/compile/internal/riscv64", "cmd/compile/internal/s390x", "cmd/compile/internal/ssa", "cmd/compile/internal/ssa/gen", "cmd/compile/internal/ssa/testdata", "cmd/compile/internal/ssagen", "cmd/compile/internal/staticdata", "cmd/compile/internal/staticinit", "cmd/compile/internal/syntax", "cmd/compile/internal/syntax/testdata", "cmd/compile/internal/syntax/testdata/go2", "cmd/compile/internal/test", "cmd/compile/internal/test/testdata", "cmd/compile/internal/test/testdata/gen", "cmd/compile/internal/test/testdata/mysort", "cmd/compile/internal/test/testdata/reproducible", "cmd/compile/internal/typebits", "cmd/compile/internal/typecheck", "cmd/compile/internal/typecheck/builtin", "cmd/compile/internal/types", "cmd/compile/internal/types2", "cmd/compile/internal/types2/testdata", "cmd/compile/internal/types2/testdata/check", "cmd/compile/internal/types2/testdata/check/decls2", "cmd/compile/internal/types2/testdata/check/importdecl0", "cmd/compile/internal/types2/testdata/check/importdecl1", "cmd/compile/internal/types2/testdata/check/issue25008", "cmd/compile/internal/types2/testdata/examples", "cmd/compile/internal/types2/testdata/fixedbugs", "cmd/compile/internal/types2/testdata/spec", "cmd/compile/internal/walk", "cmd/compile/internal/wasm", "cmd/compile/internal/x86", "cmd/cover", "cmd/cover/testdata", "cmd/cover/testdata/html", "cmd/dist", "cmd/doc", "cmd/doc/testdata", "cmd/doc/testdata/merge", "cmd/doc/testdata/nested", "cmd/doc/testdata/nested/empty", "cmd/doc/testdata/nested/nested", "cmd/fix", "cmd/go", "cmd/go/internal", "cmd/go/internal/auth", "cmd/go/internal/base", "cmd/go/internal/bug", "cmd/go/internal/cache", "cmd/go/internal/cfg", "cmd/go/internal/clean", "cmd/go/internal/cmdflag", "cmd/go/internal/doc", "cmd/go/internal/envcmd", "cmd/go/internal/fix", "cmd/go/internal/fmtcmd", "cmd/go/internal/fsys", "cmd/go/internal/generate", "cmd/go/internal/get", "cmd/go/internal/help", "cmd/go/internal/imports", "cmd/go/internal/imports/testdata", "cmd/go/internal/imports/testdata/android", "cmd/go/internal/imports/testdata/illumos", "cmd/go/internal/imports/testdata/star", "cmd/go/internal/list", "cmd/go/internal/load", "cmd/go/internal/lockedfile", "cmd/go/internal/lockedfile/internal", "cmd/go/internal/lockedfile/internal/filelock", "cmd/go/internal/modcmd", "cmd/go/internal/modconv", "cmd/go/internal/modconv/testdata", "cmd/go/internal/modfetch", "cmd/go/internal/modfetch/codehost", "cmd/go/internal/modfetch/zip_sum_test", "cmd/go/internal/modfetch/zip_sum_test/testdata", "cmd/go/internal/modget", "cmd/go/internal/modinfo", "cmd/go/internal/modload", "cmd/go/internal/mvs", "cmd/go/internal/par", "cmd/go/internal/robustio", "cmd/go/internal/run", "cmd/go/internal/search", "cmd/go/internal/str", "cmd/go/internal/test", "cmd/go/internal/test/internal", "cmd/go/internal/test/internal/genflags", "cmd/go/internal/tool", "cmd/go/internal/trace", "cmd/go/internal/vcs", "cmd/go/internal/version", "cmd/go/internal/vet", "cmd/go/internal/web", "cmd/go/internal/work", "cmd/go/internal/workcmd", "cmd/go/testdata", "cmd/go/testdata/failssh", "cmd/go/testdata/mod", "cmd/go/testdata/modlegacy", "cmd/go/testdata/modlegacy/src", "cmd/go/testdata/modlegacy/src/new", "cmd/go/testdata/modlegacy/src/new/p1", "cmd/go/testdata/modlegacy/src/new/p2", "cmd/go/testdata/modlegacy/src/new/sub", "cmd/go/testdata/modlegacy/src/new/sub/inner", "cmd/go/testdata/modlegacy/src/new/sub/inner/x", "cmd/go/testdata/modlegacy/src/new/sub/x", "cmd/go/testdata/modlegacy/src/new/sub/x/v1", "cmd/go/testdata/modlegacy/src/new/sub/x/v1/y", "cmd/go/testdata/modlegacy/src/old", "cmd/go/testdata/modlegacy/src/old/p1", "cmd/go/testdata/modlegacy/src/old/p2", "cmd/go/testdata/script", "cmd/go/testdata/testterminal18153", "cmd/gofmt", "cmd/gofmt/testdata", "cmd/internal", "cmd/internal/archive", "cmd/internal/archive/testdata", "cmd/internal/archive/testdata/mycgo", "cmd/internal/bio", "cmd/internal/browser", "cmd/internal/buildid", "cmd/internal/buildid/testdata", "cmd/internal/codesign", "cmd/internal/diff", "cmd/internal/dwarf", "cmd/internal/edit", "cmd/internal/gcprog", "cmd/internal/goobj", "cmd/internal/moddeps", "cmd/internal/obj", "cmd/internal/obj/arm", "cmd/internal/obj/arm64", "cmd/internal/obj/mips", "cmd/internal/obj/ppc64", "cmd/internal/obj/riscv", "cmd/internal/obj/riscv/testdata", "cmd/internal/obj/riscv/testdata/testbranch", "cmd/internal/obj/s390x", "cmd/internal/obj/wasm", "cmd/internal/obj/x86", "cmd/internal/objabi", "cmd/internal/objfile", "cmd/internal/pkgpath", "cmd/internal/quoted", "cmd/internal/src", "cmd/internal/sys", "cmd/internal/test2json", "cmd/internal/test2json/testdata", "cmd/internal/traceviewer", "cmd/link", "cmd/link/internal", "cmd/link/internal/amd64", "cmd/link/internal/arm", "cmd/link/internal/arm64", "cmd/link/internal/benchmark", "cmd/link/internal/dwtest", "cmd/link/internal/ld", "cmd/link/internal/ld/testdata", "cmd/link/internal/ld/testdata/deadcode", "cmd/link/internal/ld/testdata/httptest", "cmd/link/internal/ld/testdata/httptest/main", "cmd/link/internal/ld/testdata/issue10978", "cmd/link/internal/ld/testdata/issue25459", "cmd/link/internal/ld/testdata/issue25459/a", "cmd/link/internal/ld/testdata/issue25459/main", "cmd/link/internal/ld/testdata/issue26237", "cmd/link/internal/ld/testdata/issue26237/b.dir", "cmd/link/internal/ld/testdata/issue26237/main", "cmd/link/internal/ld/testdata/issue32233", "cmd/link/internal/ld/testdata/issue32233/lib", "cmd/link/internal/ld/testdata/issue32233/main", "cmd/link/internal/ld/testdata/issue38192", "cmd/link/internal/ld/testdata/issue39256", "cmd/link/internal/ld/testdata/issue39757", "cmd/link/internal/ld/testdata/issue42484", "cmd/link/internal/loadelf", "cmd/link/internal/loader", "cmd/link/internal/loadmacho", "cmd/link/internal/loadpe", "cmd/link/internal/loadxcoff", "cmd/link/internal/mips", "cmd/link/internal/mips64", "cmd/link/internal/ppc64", "cmd/link/internal/riscv64", "cmd/link/internal/s390x", "cmd/link/internal/sym", "cmd/link/internal/wasm", "cmd/link/internal/x86", "cmd/link/testdata", "cmd/link/testdata/pe-binutils", "cmd/link/testdata/pe-llvm", "cmd/link/testdata/testBuildFortvOS", "cmd/link/testdata/testHashedSyms", "cmd/link/testdata/testIndexMismatch", "cmd/link/testdata/testRO", "cmd/nm", "cmd/objdump", "cmd/objdump/testdata", "cmd/objdump/testdata/testfilenum", "cmd/pack", "cmd/pprof", "cmd/pprof/testdata", "cmd/test2json", "cmd/trace", "cmd/vendor", "cmd/vendor/github.com", "cmd/vendor/github.com/google", "cmd/vendor/github.com/google/pprof", "cmd/vendor/github.com/google/pprof/driver", "cmd/vendor/github.com/google/pprof/internal", "cmd/vendor/github.com/google/pprof/internal/binutils", "cmd/vendor/github.com/google/pprof/internal/driver", "cmd/vendor/github.com/google/pprof/internal/elfexec", "cmd/vendor/github.com/google/pprof/internal/graph", "cmd/vendor/github.com/google/pprof/internal/measurement", "cmd/vendor/github.com/google/pprof/internal/plugin", "cmd/vendor/github.com/google/pprof/internal/report", "cmd/vendor/github.com/google/pprof/internal/symbolizer", "cmd/vendor/github.com/google/pprof/internal/symbolz", "cmd/vendor/github.com/google/pprof/internal/transport", "cmd/vendor/github.com/google/pprof/profile", "cmd/vendor/github.com/google/pprof/third_party", "cmd/vendor/github.com/google/pprof/third_party/d3", "cmd/vendor/github.com/google/pprof/third_party/d3flamegraph", "cmd/vendor/github.com/google/pprof/third_party/svgpan", "cmd/vendor/github.com/ianlancetaylor", "cmd/vendor/github.com/ianlancetaylor/demangle", "cmd/vendor/golang.org", "cmd/vendor/golang.org/x", "cmd/vendor/golang.org/x/arch", "cmd/vendor/golang.org/x/arch/arm", "cmd/vendor/golang.org/x/arch/arm/armasm", "cmd/vendor/golang.org/x/arch/arm64", "cmd/vendor/golang.org/x/arch/arm64/arm64asm", "cmd/vendor/golang.org/x/arch/ppc64", "cmd/vendor/golang.org/x/arch/ppc64/ppc64asm", "cmd/vendor/golang.org/x/arch/x86", "cmd/vendor/golang.org/x/arch/x86/x86asm", "cmd/vendor/golang.org/x/crypto", "cmd/vendor/golang.org/x/crypto/ed25519", "cmd/vendor/golang.org/x/crypto/ed25519/internal", "cmd/vendor/golang.org/x/crypto/ed25519/internal/edwards25519", "cmd/vendor/golang.org/x/mod", "cmd/vendor/golang.org/x/mod/internal", "cmd/vendor/golang.org/x/mod/internal/lazyregexp", "cmd/vendor/golang.org/x/mod/modfile", "cmd/vendor/golang.org/x/mod/module", "cmd/vendor/golang.org/x/mod/semver", "cmd/vendor/golang.org/x/mod/sumdb", "cmd/vendor/golang.org/x/mod/sumdb/dirhash", "cmd/vendor/golang.org/x/mod/sumdb/note", "cmd/vendor/golang.org/x/mod/sumdb/tlog", "cmd/vendor/golang.org/x/mod/zip", "cmd/vendor/golang.org/x/sync", "cmd/vendor/golang.org/x/sync/semaphore", "cmd/vendor/golang.org/x/sys", "cmd/vendor/golang.org/x/sys/internal", "cmd/vendor/golang.org/x/sys/internal/unsafeheader", "cmd/vendor/golang.org/x/sys/plan9", "cmd/vendor/golang.org/x/sys/unix", "cmd/vendor/golang.org/x/sys/windows", "cmd/vendor/golang.org/x/term", "cmd/vendor/golang.org/x/tools", "cmd/vendor/golang.org/x/tools/cover", "cmd/vendor/golang.org/x/tools/go", "cmd/vendor/golang.org/x/tools/go/analysis", "cmd/vendor/golang.org/x/tools/go/analysis/internal", "cmd/vendor/golang.org/x/tools/go/analysis/internal/analysisflags", "cmd/vendor/golang.org/x/tools/go/analysis/internal/facts", "cmd/vendor/golang.org/x/tools/go/analysis/passes", "cmd/vendor/golang.org/x/tools/go/analysis/passes/asmdecl", "cmd/vendor/golang.org/x/tools/go/analysis/passes/assign", "cmd/vendor/golang.org/x/tools/go/analysis/passes/atomic", "cmd/vendor/golang.org/x/tools/go/analysis/passes/bools", "cmd/vendor/golang.org/x/tools/go/analysis/passes/buildtag", "cmd/vendor/golang.org/x/tools/go/analysis/passes/cgocall", "cmd/vendor/golang.org/x/tools/go/analysis/passes/composite", "cmd/vendor/golang.org/x/tools/go/analysis/passes/copylock", "cmd/vendor/golang.org/x/tools/go/analysis/passes/ctrlflow", "cmd/vendor/golang.org/x/tools/go/analysis/passes/errorsas", "cmd/vendor/golang.org/x/tools/go/analysis/passes/framepointer", "cmd/vendor/golang.org/x/tools/go/analysis/passes/httpresponse", "cmd/vendor/golang.org/x/tools/go/analysis/passes/ifaceassert", "cmd/vendor/golang.org/x/tools/go/analysis/passes/inspect", "cmd/vendor/golang.org/x/tools/go/analysis/passes/internal", "cmd/vendor/golang.org/x/tools/go/analysis/passes/internal/analysisutil", "cmd/vendor/golang.org/x/tools/go/analysis/passes/loopclosure", "cmd/vendor/golang.org/x/tools/go/analysis/passes/lostcancel", "cmd/vendor/golang.org/x/tools/go/analysis/passes/nilfunc", "cmd/vendor/golang.org/x/tools/go/analysis/passes/printf", "cmd/vendor/golang.org/x/tools/go/analysis/passes/shift", "cmd/vendor/golang.org/x/tools/go/analysis/passes/sigchanyzer", "cmd/vendor/golang.org/x/tools/go/analysis/passes/stdmethods", "cmd/vendor/golang.org/x/tools/go/analysis/passes/stringintconv", "cmd/vendor/golang.org/x/tools/go/analysis/passes/structtag", "cmd/vendor/golang.org/x/tools/go/analysis/passes/testinggoroutine", "cmd/vendor/golang.org/x/tools/go/analysis/passes/tests", "cmd/vendor/golang.org/x/tools/go/analysis/passes/unmarshal", "cmd/vendor/golang.org/x/tools/go/analysis/passes/unreachable", "cmd/vendor/golang.org/x/tools/go/analysis/passes/unsafeptr", "cmd/vendor/golang.org/x/tools/go/analysis/passes/unusedresult", "cmd/vendor/golang.org/x/tools/go/analysis/unitchecker", "cmd/vendor/golang.org/x/tools/go/ast", "cmd/vendor/golang.org/x/tools/go/ast/astutil", "cmd/vendor/golang.org/x/tools/go/ast/inspector", "cmd/vendor/golang.org/x/tools/go/cfg", "cmd/vendor/golang.org/x/tools/go/types", "cmd/vendor/golang.org/x/tools/go/types/objectpath", "cmd/vendor/golang.org/x/tools/go/types/typeutil", "cmd/vendor/golang.org/x/tools/internal", "cmd/vendor/golang.org/x/tools/internal/analysisinternal", "cmd/vendor/golang.org/x/tools/internal/lsp", "cmd/vendor/golang.org/x/tools/internal/lsp/fuzzy", "cmd/vendor/golang.org/x/tools/internal/typeparams", "cmd/vendor/golang.org/x/tools/txtar", "cmd/vendor/golang.org/x/xerrors", "cmd/vendor/golang.org/x/xerrors/internal", "cmd/vet", "cmd/vet/testdata", "cmd/vet/testdata/asm", "cmd/vet/testdata/assign", "cmd/vet/testdata/atomic", "cmd/vet/testdata/bool", "cmd/vet/testdata/buildtag", "cmd/vet/testdata/cgo", "cmd/vet/testdata/composite", "cmd/vet/testdata/copylock", "cmd/vet/testdata/deadcode", "cmd/vet/testdata/httpresponse", "cmd/vet/testdata/lostcancel", "cmd/vet/testdata/method", "cmd/vet/testdata/nilfunc", "cmd/vet/testdata/print", "cmd/vet/testdata/rangeloop", "cmd/vet/testdata/shift", "cmd/vet/testdata/structtag", "cmd/vet/testdata/tagtest", "cmd/vet/testdata/testingpkg", "cmd/vet/testdata/unmarshal", "cmd/vet/testdata/unsafeptr", "cmd/vet/testdata/unused", "compress", "compress/bzip2", "compress/bzip2/testdata", "compress/flate", "compress/flate/testdata", "compress/gzip", "compress/gzip/testdata", "compress/lzw", "compress/testdata", "compress/zlib", "container", "container/heap", "container/list", "container/ring", "context", "crypto", "crypto/aes", "crypto/cipher", "crypto/des", "crypto/dsa", "crypto/ecdsa", "crypto/ecdsa/testdata", "crypto/ed25519", "crypto/ed25519/internal", "crypto/ed25519/internal/edwards25519", "crypto/ed25519/internal/edwards25519/field", "crypto/ed25519/internal/edwards25519/field/_asm", "crypto/ed25519/testdata", "crypto/elliptic", "crypto/elliptic/internal", "crypto/elliptic/internal/fiat", "crypto/elliptic/internal/nistec", "crypto/hmac", "crypto/internal", "crypto/internal/randutil", "crypto/internal/subtle", "crypto/md5", "crypto/rand", "crypto/rc4", "crypto/rsa", "crypto/rsa/testdata", "crypto/sha1", "crypto/sha256", "crypto/sha512", "crypto/subtle", "crypto/tls", "crypto/tls/testdata", "crypto/x509", "crypto/x509/internal", "crypto/x509/internal/macos", "crypto/x509/pkix", "crypto/x509/testdata", "database", "database/sql", "database/sql/driver", "debug", "debug/buildinfo", "debug/dwarf", "debug/dwarf/testdata", "debug/elf", "debug/elf/testdata", "debug/gosym", "debug/gosym/testdata", "debug/macho", "debug/macho/testdata", "debug/pe", "debug/pe/testdata", "debug/plan9obj", "debug/plan9obj/testdata", "embed", "embed/internal", "embed/internal/embedtest", "embed/internal/embedtest/testdata", "embed/internal/embedtest/testdata/-not-hidden", "embed/internal/embedtest/testdata/.hidden", "embed/internal/embedtest/testdata/.hidden/.more", "embed/internal/embedtest/testdata/.hidden/_more", "embed/internal/embedtest/testdata/.hidden/more", "embed/internal/embedtest/testdata/_hidden", "embed/internal/embedtest/testdata/i", "embed/internal/embedtest/testdata/i/j", "embed/internal/embedtest/testdata/i/j/k", "encoding", "encoding/ascii85", "encoding/asn1", "encoding/base32", "encoding/base64", "encoding/binary", "encoding/csv", "encoding/gob", "encoding/hex", "encoding/json", "encoding/json/testdata", "encoding/pem", "encoding/xml", "errors", "expvar", "flag", "fmt", "go", "go/ast", "go/build", "go/build/constraint", "go/build/testdata", "go/build/testdata/cgo_disabled", "go/build/testdata/doc", "go/build/testdata/empty", "go/build/testdata/multi", "go/build/testdata/other", "go/build/testdata/other/file", "go/build/testdata/withvendor", "go/build/testdata/withvendor/src", "go/build/testdata/withvendor/src/a", "go/build/testdata/withvendor/src/a/b", "go/build/testdata/withvendor/src/a/vendor", "go/build/testdata/withvendor/src/a/vendor/c", "go/build/testdata/withvendor/src/a/vendor/c/d", "go/constant", "go/doc", "go/doc/testdata", "go/format", "go/importer", "go/internal", "go/internal/gccgoimporter", "go/internal/gccgoimporter/testdata", "go/internal/gcimporter", "go/internal/gcimporter/testdata", "go/internal/gcimporter/testdata/versions", "go/internal/srcimporter", "go/internal/srcimporter/testdata", "go/internal/srcimporter/testdata/issue20855", "go/internal/srcimporter/testdata/issue23092", "go/internal/srcimporter/testdata/issue24392", "go/internal/typeparams", "go/parser", "go/parser/testdata", "go/parser/testdata/issue42951", "go/parser/testdata/issue42951/not_a_file.go", "go/parser/testdata/resolution", "go/printer", "go/printer/testdata", "go/scanner", "go/token", "go/types", "go/types/testdata", "go/types/testdata/check", "go/types/testdata/check/decls2", "go/types/testdata/check/importdecl0", "go/types/testdata/check/importdecl1", "go/types/testdata/check/issue25008", "go/types/testdata/examples", "go/types/testdata/fixedbugs", "go/types/testdata/spec", "hash", "hash/adler32", "hash/crc32", "hash/crc64", "hash/fnv", "hash/maphash", "html", "html/template", "html/template/testdata", "image", "image/color", "image/color/palette", "image/draw", "image/gif", "image/internal", "image/internal/imageutil", "image/jpeg", "image/png", "image/png/testdata", "image/png/testdata/pngsuite", "image/testdata", "index", "index/suffixarray", "internal", "internal/abi", "internal/abi/testdata", "internal/buildcfg", "internal/bytealg", "internal/cfg", "internal/cpu", "internal/execabs", "internal/fmtsort", "internal/fuzz", "internal/goarch", "internal/godebug", "internal/goexperiment", "internal/goos", "internal/goroot", "internal/goversion", "internal/intern", "internal/itoa", "internal/lazyregexp", "internal/lazytemplate", "internal/nettrace", "internal/obscuretestdata", "internal/oserror", "internal/poll", "internal/profile", "internal/race", "internal/reflectlite", "internal/singleflight", "internal/syscall", "internal/syscall/execenv", "internal/syscall/unix", "internal/syscall/windows", "internal/syscall/windows/registry", "internal/syscall/windows/sysdll", "internal/sysinfo", "internal/testenv", "internal/testlog", "internal/trace", "internal/trace/testdata", "internal/unsafeheader", "internal/xcoff", "internal/xcoff/testdata", "io", "io/fs", "io/ioutil", "io/ioutil/testdata", "log", "log/syslog", "math", "math/big", "math/bits", "math/cmplx", "math/rand", "mime", "mime/multipart", "mime/multipart/testdata", "mime/quotedprintable", "mime/testdata", "net", "net/http", "net/http/cgi", "net/http/cgi/testdata", "net/http/cookiejar", "net/http/fcgi", "net/http/httptest", "net/http/httptrace", "net/http/httputil", "net/http/internal", "net/http/internal/ascii", "net/http/internal/testcert", "net/http/pprof", "net/http/testdata", "net/internal", "net/internal/socktest", "net/mail", "net/netip", "net/rpc", "net/rpc/jsonrpc", "net/smtp", "net/testdata", "net/textproto", "net/url", "os", "os/exec", "os/exec/internal", "os/exec/internal/fdtest", "os/signal", "os/signal/internal", "os/signal/internal/pty", "os/testdata", "os/testdata/dirfs", "os/testdata/dirfs/dir", "os/testdata/issue37161", "os/user", "path", "path/filepath", "plugin", "reflect", "reflect/internal", "reflect/internal/example1", "reflect/internal/example2", "regexp", "regexp/syntax", "regexp/testdata", "runtime", "runtime/asan", "runtime/cgo", "runtime/debug", "runtime/internal", "runtime/internal/atomic", "runtime/internal/math", "runtime/internal/sys", "runtime/internal/syscall", "runtime/metrics", "runtime/msan", "runtime/pprof", "runtime/pprof/testdata", "runtime/pprof/testdata/mappingtest", "runtime/race", "runtime/race/testdata", "runtime/testdata", "runtime/testdata/testfaketime", "runtime/testdata/testprog", "runtime/testdata/testprogcgo", "runtime/testdata/testprogcgo/windows", "runtime/testdata/testprognet", "runtime/testdata/testwinlib", "runtime/testdata/testwinlibsignal", "runtime/testdata/testwinsignal", "runtime/trace", "sort", "strconv", "strconv/testdata", "strings", "sync", "sync/atomic", "syscall", "syscall/js", "testdata", "testing", "testing/fstest", "testing/internal", "testing/internal/testdeps", "testing/iotest", "testing/quick", "text", "text/scanner", "text/tabwriter", "text/template", "text/template/parse", "text/template/testdata", "time", "time/testdata", "time/tzdata", "unicode", "unicode/utf16", "unicode/utf8", "unsafe", "vendor", "vendor/golang.org", "vendor/golang.org/x", "vendor/golang.org/x/crypto", "vendor/golang.org/x/crypto/chacha20", "vendor/golang.org/x/crypto/chacha20poly1305", "vendor/golang.org/x/crypto/cryptobyte", "vendor/golang.org/x/crypto/cryptobyte/asn1", "vendor/golang.org/x/crypto/curve25519", "vendor/golang.org/x/crypto/curve25519/internal", "vendor/golang.org/x/crypto/curve25519/internal/field", "vendor/golang.org/x/crypto/hkdf", "vendor/golang.org/x/crypto/internal", "vendor/golang.org/x/crypto/internal/poly1305", "vendor/golang.org/x/crypto/internal/subtle", "vendor/golang.org/x/net", "vendor/golang.org/x/net/dns", "vendor/golang.org/x/net/dns/dnsmessage", "vendor/golang.org/x/net/http", "vendor/golang.org/x/net/http/httpguts", "vendor/golang.org/x/net/http/httpproxy", "vendor/golang.org/x/net/http2", "vendor/golang.org/x/net/http2/hpack", "vendor/golang.org/x/net/idna", "vendor/golang.org/x/net/lif", "vendor/golang.org/x/net/nettest", "vendor/golang.org/x/net/route", "vendor/golang.org/x/sys", "vendor/golang.org/x/sys/cpu", "vendor/golang.org/x/text", "vendor/golang.org/x/text/secure", "vendor/golang.org/x/text/secure/bidirule", "vendor/golang.org/x/text/transform", "vendor/golang.org/x/text/unicode", "vendor/golang.org/x/text/unicode/bidi", "vendor/golang.org/x/text/unicode/norm"} \ No newline at end of file +var standardPackages = []string{"archive", "archive/tar", "archive/tar/testdata", "archive/zip", "archive/zip/testdata", "arena", "bufio", "builtin", "bytes", "cmd", "cmd/addr2line", "cmd/api", "cmd/api/testdata", "cmd/api/testdata/src", "cmd/api/testdata/src/issue21181", "cmd/api/testdata/src/issue21181/dep", "cmd/api/testdata/src/issue21181/indirect", "cmd/api/testdata/src/issue21181/p", "cmd/api/testdata/src/issue29837", "cmd/api/testdata/src/issue29837/p", "cmd/api/testdata/src/pkg", "cmd/api/testdata/src/pkg/p1", "cmd/api/testdata/src/pkg/p2", "cmd/api/testdata/src/pkg/p3", "cmd/api/testdata/src/pkg/p4", "cmd/asm", "cmd/asm/internal", "cmd/asm/internal/arch", "cmd/asm/internal/asm", "cmd/asm/internal/asm/testdata", "cmd/asm/internal/asm/testdata/avx512enc", "cmd/asm/internal/flags", "cmd/asm/internal/lex", "cmd/buildid", "cmd/cgo", "cmd/compile", "cmd/compile/internal", "cmd/compile/internal/abi", "cmd/compile/internal/abt", "cmd/compile/internal/amd64", "cmd/compile/internal/arm", "cmd/compile/internal/arm64", "cmd/compile/internal/base", "cmd/compile/internal/bitvec", "cmd/compile/internal/compare", "cmd/compile/internal/coverage", "cmd/compile/internal/deadcode", "cmd/compile/internal/devirtualize", "cmd/compile/internal/dwarfgen", "cmd/compile/internal/escape", "cmd/compile/internal/gc", "cmd/compile/internal/importer", "cmd/compile/internal/importer/testdata", "cmd/compile/internal/importer/testdata/versions", "cmd/compile/internal/inline", "cmd/compile/internal/ir", "cmd/compile/internal/liveness", "cmd/compile/internal/logopt", "cmd/compile/internal/loong64", "cmd/compile/internal/mips", "cmd/compile/internal/mips64", "cmd/compile/internal/noder", "cmd/compile/internal/objw", "cmd/compile/internal/pgo", "cmd/compile/internal/pkginit", "cmd/compile/internal/ppc64", "cmd/compile/internal/reflectdata", "cmd/compile/internal/riscv64", "cmd/compile/internal/s390x", "cmd/compile/internal/ssa", "cmd/compile/internal/ssa/_gen", "cmd/compile/internal/ssa/testdata", "cmd/compile/internal/ssagen", "cmd/compile/internal/staticdata", "cmd/compile/internal/staticinit", "cmd/compile/internal/syntax", "cmd/compile/internal/syntax/testdata", "cmd/compile/internal/test", "cmd/compile/internal/test/testdata", "cmd/compile/internal/test/testdata/gen", "cmd/compile/internal/test/testdata/mysort", "cmd/compile/internal/test/testdata/pgo", "cmd/compile/internal/test/testdata/pgo/inline", "cmd/compile/internal/test/testdata/reproducible", "cmd/compile/internal/typebits", "cmd/compile/internal/typecheck", "cmd/compile/internal/typecheck/_builtin", "cmd/compile/internal/types", "cmd/compile/internal/types2", "cmd/compile/internal/types2/testdata", "cmd/compile/internal/types2/testdata/local", "cmd/compile/internal/walk", "cmd/compile/internal/wasm", "cmd/compile/internal/x86", "cmd/covdata", "cmd/covdata/testdata", "cmd/cover", "cmd/cover/testdata", "cmd/cover/testdata/html", "cmd/cover/testdata/pkgcfg", "cmd/cover/testdata/pkgcfg/a", "cmd/cover/testdata/pkgcfg/b", "cmd/cover/testdata/pkgcfg/main", "cmd/dist", "cmd/doc", "cmd/doc/testdata", "cmd/doc/testdata/merge", "cmd/doc/testdata/nested", "cmd/doc/testdata/nested/empty", "cmd/doc/testdata/nested/nested", "cmd/fix", "cmd/go", "cmd/go/internal", "cmd/go/internal/auth", "cmd/go/internal/base", "cmd/go/internal/bug", "cmd/go/internal/cache", "cmd/go/internal/cfg", "cmd/go/internal/clean", "cmd/go/internal/cmdflag", "cmd/go/internal/doc", "cmd/go/internal/envcmd", "cmd/go/internal/fix", "cmd/go/internal/fmtcmd", "cmd/go/internal/fsys", "cmd/go/internal/generate", "cmd/go/internal/get", "cmd/go/internal/help", "cmd/go/internal/imports", "cmd/go/internal/imports/testdata", "cmd/go/internal/imports/testdata/android", "cmd/go/internal/imports/testdata/illumos", "cmd/go/internal/imports/testdata/star", "cmd/go/internal/list", "cmd/go/internal/load", "cmd/go/internal/lockedfile", "cmd/go/internal/lockedfile/internal", "cmd/go/internal/lockedfile/internal/filelock", "cmd/go/internal/mmap", "cmd/go/internal/modcmd", "cmd/go/internal/modconv", "cmd/go/internal/modconv/testdata", "cmd/go/internal/modfetch", "cmd/go/internal/modfetch/codehost", "cmd/go/internal/modfetch/zip_sum_test", "cmd/go/internal/modfetch/zip_sum_test/testdata", "cmd/go/internal/modget", "cmd/go/internal/modindex", "cmd/go/internal/modindex/testdata", "cmd/go/internal/modindex/testdata/ignore_non_source", "cmd/go/internal/modinfo", "cmd/go/internal/modload", "cmd/go/internal/mvs", "cmd/go/internal/par", "cmd/go/internal/robustio", "cmd/go/internal/run", "cmd/go/internal/script", "cmd/go/internal/script/scripttest", "cmd/go/internal/search", "cmd/go/internal/slices", "cmd/go/internal/str", "cmd/go/internal/test", "cmd/go/internal/test/internal", "cmd/go/internal/test/internal/genflags", "cmd/go/internal/tool", "cmd/go/internal/trace", "cmd/go/internal/vcs", "cmd/go/internal/vcweb", "cmd/go/internal/vcweb/vcstest", "cmd/go/internal/version", "cmd/go/internal/vet", "cmd/go/internal/web", "cmd/go/internal/work", "cmd/go/internal/workcmd", "cmd/go/testdata", "cmd/go/testdata/failssh", "cmd/go/testdata/mod", "cmd/go/testdata/script", "cmd/go/testdata/vcstest", "cmd/go/testdata/vcstest/auth", "cmd/go/testdata/vcstest/bzr", "cmd/go/testdata/vcstest/fossil", "cmd/go/testdata/vcstest/git", "cmd/go/testdata/vcstest/go", "cmd/go/testdata/vcstest/go/mod", "cmd/go/testdata/vcstest/hg", "cmd/go/testdata/vcstest/svn", "cmd/gofmt", "cmd/gofmt/testdata", "cmd/internal", "cmd/internal/archive", "cmd/internal/archive/testdata", "cmd/internal/archive/testdata/mycgo", "cmd/internal/bio", "cmd/internal/browser", "cmd/internal/buildid", "cmd/internal/buildid/testdata", "cmd/internal/codesign", "cmd/internal/cov", "cmd/internal/dwarf", "cmd/internal/edit", "cmd/internal/gcprog", "cmd/internal/goobj", "cmd/internal/metadata", "cmd/internal/moddeps", "cmd/internal/notsha256", "cmd/internal/obj", "cmd/internal/obj/arm", "cmd/internal/obj/arm64", "cmd/internal/obj/loong64", "cmd/internal/obj/mips", "cmd/internal/obj/ppc64", "cmd/internal/obj/riscv", "cmd/internal/obj/riscv/testdata", "cmd/internal/obj/riscv/testdata/testbranch", "cmd/internal/obj/s390x", "cmd/internal/obj/wasm", "cmd/internal/obj/x86", "cmd/internal/objabi", "cmd/internal/objfile", "cmd/internal/osinfo", "cmd/internal/pkgpath", "cmd/internal/pkgpattern", "cmd/internal/quoted", "cmd/internal/src", "cmd/internal/sys", "cmd/internal/test2json", "cmd/internal/test2json/testdata", "cmd/internal/traceviewer", "cmd/link", "cmd/link/internal", "cmd/link/internal/amd64", "cmd/link/internal/arm", "cmd/link/internal/arm64", "cmd/link/internal/benchmark", "cmd/link/internal/dwtest", "cmd/link/internal/ld", "cmd/link/internal/ld/testdata", "cmd/link/internal/ld/testdata/deadcode", "cmd/link/internal/ld/testdata/httptest", "cmd/link/internal/ld/testdata/httptest/main", "cmd/link/internal/ld/testdata/issue10978", "cmd/link/internal/ld/testdata/issue25459", "cmd/link/internal/ld/testdata/issue25459/a", "cmd/link/internal/ld/testdata/issue25459/main", "cmd/link/internal/ld/testdata/issue26237", "cmd/link/internal/ld/testdata/issue26237/b.dir", "cmd/link/internal/ld/testdata/issue26237/main", "cmd/link/internal/ld/testdata/issue32233", "cmd/link/internal/ld/testdata/issue32233/lib", "cmd/link/internal/ld/testdata/issue32233/main", "cmd/link/internal/ld/testdata/issue38192", "cmd/link/internal/ld/testdata/issue39256", "cmd/link/internal/ld/testdata/issue39757", "cmd/link/internal/ld/testdata/issue42484", "cmd/link/internal/ld/testdata/stackcheck", "cmd/link/internal/loadelf", "cmd/link/internal/loader", "cmd/link/internal/loadmacho", "cmd/link/internal/loadpe", "cmd/link/internal/loadxcoff", "cmd/link/internal/loong64", "cmd/link/internal/mips", "cmd/link/internal/mips64", "cmd/link/internal/ppc64", "cmd/link/internal/riscv64", "cmd/link/internal/s390x", "cmd/link/internal/sym", "cmd/link/internal/wasm", "cmd/link/internal/x86", "cmd/link/testdata", "cmd/link/testdata/pe-binutils", "cmd/link/testdata/pe-llvm", "cmd/link/testdata/testBuildFortvOS", "cmd/link/testdata/testHashedSyms", "cmd/link/testdata/testIndexMismatch", "cmd/link/testdata/testRO", "cmd/nm", "cmd/objdump", "cmd/objdump/testdata", "cmd/objdump/testdata/testfilenum", "cmd/pack", "cmd/pprof", "cmd/pprof/testdata", "cmd/test2json", "cmd/trace", "cmd/trace/static", "cmd/vendor", "github.com", "github.com/google", "github.com/google/pprof", "github.com/google/pprof/driver", "github.com/google/pprof/internal", "github.com/google/pprof/internal/binutils", "github.com/google/pprof/internal/driver", "github.com/google/pprof/internal/driver/html", "github.com/google/pprof/internal/elfexec", "github.com/google/pprof/internal/graph", "github.com/google/pprof/internal/measurement", "github.com/google/pprof/internal/plugin", "github.com/google/pprof/internal/report", "github.com/google/pprof/internal/symbolizer", "github.com/google/pprof/internal/symbolz", "github.com/google/pprof/internal/transport", "github.com/google/pprof/profile", "github.com/google/pprof/third_party", "github.com/google/pprof/third_party/d3flamegraph", "github.com/google/pprof/third_party/svgpan", "github.com/ianlancetaylor", "github.com/ianlancetaylor/demangle", "golang.org", "golang.org/x", "golang.org/x/arch", "golang.org/x/arch/arm", "golang.org/x/arch/arm/armasm", "golang.org/x/arch/arm64", "golang.org/x/arch/arm64/arm64asm", "golang.org/x/arch/ppc64", "golang.org/x/arch/ppc64/ppc64asm", "golang.org/x/arch/x86", "golang.org/x/arch/x86/x86asm", "golang.org/x/mod", "golang.org/x/mod/internal", "golang.org/x/mod/internal/lazyregexp", "golang.org/x/mod/modfile", "golang.org/x/mod/module", "golang.org/x/mod/semver", "golang.org/x/mod/sumdb", "golang.org/x/mod/sumdb/dirhash", "golang.org/x/mod/sumdb/note", "golang.org/x/mod/sumdb/tlog", "golang.org/x/mod/zip", "golang.org/x/sync", "golang.org/x/sync/semaphore", "golang.org/x/sys", "golang.org/x/sys/internal", "golang.org/x/sys/internal/unsafeheader", "golang.org/x/sys/plan9", "golang.org/x/sys/unix", "golang.org/x/sys/windows", "golang.org/x/term", "golang.org/x/tools", "golang.org/x/tools/cover", "golang.org/x/tools/go", "golang.org/x/tools/go/analysis", "golang.org/x/tools/go/analysis/internal", "golang.org/x/tools/go/analysis/internal/analysisflags", "golang.org/x/tools/go/analysis/passes", "golang.org/x/tools/go/analysis/passes/asmdecl", "golang.org/x/tools/go/analysis/passes/assign", "golang.org/x/tools/go/analysis/passes/atomic", "golang.org/x/tools/go/analysis/passes/bools", "golang.org/x/tools/go/analysis/passes/buildtag", "golang.org/x/tools/go/analysis/passes/cgocall", "golang.org/x/tools/go/analysis/passes/composite", "golang.org/x/tools/go/analysis/passes/copylock", "golang.org/x/tools/go/analysis/passes/ctrlflow", "golang.org/x/tools/go/analysis/passes/directive", "golang.org/x/tools/go/analysis/passes/errorsas", "golang.org/x/tools/go/analysis/passes/framepointer", "golang.org/x/tools/go/analysis/passes/httpresponse", "golang.org/x/tools/go/analysis/passes/ifaceassert", "golang.org/x/tools/go/analysis/passes/inspect", "golang.org/x/tools/go/analysis/passes/internal", "golang.org/x/tools/go/analysis/passes/internal/analysisutil", "golang.org/x/tools/go/analysis/passes/loopclosure", "golang.org/x/tools/go/analysis/passes/lostcancel", "golang.org/x/tools/go/analysis/passes/nilfunc", "golang.org/x/tools/go/analysis/passes/printf", "golang.org/x/tools/go/analysis/passes/shift", "golang.org/x/tools/go/analysis/passes/sigchanyzer", "golang.org/x/tools/go/analysis/passes/stdmethods", "golang.org/x/tools/go/analysis/passes/stringintconv", "golang.org/x/tools/go/analysis/passes/structtag", "golang.org/x/tools/go/analysis/passes/testinggoroutine", "golang.org/x/tools/go/analysis/passes/tests", "golang.org/x/tools/go/analysis/passes/timeformat", "golang.org/x/tools/go/analysis/passes/unmarshal", "golang.org/x/tools/go/analysis/passes/unreachable", "golang.org/x/tools/go/analysis/passes/unsafeptr", "golang.org/x/tools/go/analysis/passes/unusedresult", "golang.org/x/tools/go/analysis/unitchecker", "golang.org/x/tools/go/ast", "golang.org/x/tools/go/ast/astutil", "golang.org/x/tools/go/ast/inspector", "golang.org/x/tools/go/cfg", "golang.org/x/tools/go/types", "golang.org/x/tools/go/types/objectpath", "golang.org/x/tools/go/types/typeutil", "golang.org/x/tools/internal", "golang.org/x/tools/internal/analysisinternal", "golang.org/x/tools/internal/facts", "golang.org/x/tools/internal/typeparams", "cmd/vet", "cmd/vet/testdata", "cmd/vet/testdata/asm", "cmd/vet/testdata/assign", "cmd/vet/testdata/atomic", "cmd/vet/testdata/bool", "cmd/vet/testdata/buildtag", "cmd/vet/testdata/cgo", "cmd/vet/testdata/composite", "cmd/vet/testdata/copylock", "cmd/vet/testdata/deadcode", "cmd/vet/testdata/directive", "cmd/vet/testdata/httpresponse", "cmd/vet/testdata/lostcancel", "cmd/vet/testdata/method", "cmd/vet/testdata/nilfunc", "cmd/vet/testdata/print", "cmd/vet/testdata/rangeloop", "cmd/vet/testdata/shift", "cmd/vet/testdata/structtag", "cmd/vet/testdata/tagtest", "cmd/vet/testdata/testingpkg", "cmd/vet/testdata/unmarshal", "cmd/vet/testdata/unsafeptr", "cmd/vet/testdata/unused", "compress", "compress/bzip2", "compress/bzip2/testdata", "compress/flate", "compress/flate/testdata", "compress/gzip", "compress/gzip/testdata", "compress/lzw", "compress/testdata", "compress/zlib", "container", "container/heap", "container/list", "container/ring", "context", "crypto", "crypto/aes", "crypto/boring", "crypto/cipher", "crypto/des", "crypto/dsa", "crypto/ecdh", "crypto/ecdsa", "crypto/ecdsa/testdata", "crypto/ed25519", "crypto/ed25519/testdata", "crypto/elliptic", "crypto/hmac", "crypto/internal", "crypto/internal/alias", "crypto/internal/bigmod", "crypto/internal/bigmod/_asm", "crypto/internal/boring", "crypto/internal/boring/bbig", "crypto/internal/boring/bcache", "crypto/internal/boring/fipstls", "crypto/internal/boring/sig", "crypto/internal/boring/syso", "crypto/internal/edwards25519", "crypto/internal/edwards25519/field", "crypto/internal/edwards25519/field/_asm", "crypto/internal/nistec", "crypto/internal/nistec/fiat", "crypto/internal/randutil", "crypto/md5", "crypto/rand", "crypto/rc4", "crypto/rsa", "crypto/rsa/testdata", "crypto/sha1", "crypto/sha256", "crypto/sha512", "crypto/subtle", "crypto/tls", "crypto/tls/fipsonly", "crypto/tls/testdata", "crypto/x509", "crypto/x509/internal", "crypto/x509/internal/macos", "crypto/x509/pkix", "crypto/x509/testdata", "database", "database/sql", "database/sql/driver", "debug", "debug/buildinfo", "debug/dwarf", "debug/dwarf/testdata", "debug/elf", "debug/elf/testdata", "debug/gosym", "debug/gosym/testdata", "debug/macho", "debug/macho/testdata", "debug/pe", "debug/pe/testdata", "debug/plan9obj", "debug/plan9obj/testdata", "embed", "embed/internal", "embed/internal/embedtest", "embed/internal/embedtest/testdata", "embed/internal/embedtest/testdata/-not-hidden", "embed/internal/embedtest/testdata/.hidden", "embed/internal/embedtest/testdata/.hidden/.more", "embed/internal/embedtest/testdata/.hidden/_more", "embed/internal/embedtest/testdata/.hidden/more", "embed/internal/embedtest/testdata/_hidden", "embed/internal/embedtest/testdata/i", "embed/internal/embedtest/testdata/i/j", "embed/internal/embedtest/testdata/i/j/k", "encoding", "encoding/ascii85", "encoding/asn1", "encoding/base32", "encoding/base64", "encoding/binary", "encoding/csv", "encoding/gob", "encoding/hex", "encoding/json", "encoding/json/testdata", "encoding/pem", "encoding/xml", "errors", "expvar", "flag", "fmt", "go", "go/ast", "go/build", "go/build/constraint", "go/build/testdata", "go/build/testdata/alltags", "go/build/testdata/bads", "go/build/testdata/cgo_disabled", "go/build/testdata/doc", "go/build/testdata/empty", "go/build/testdata/multi", "go/build/testdata/non_source_tags", "go/build/testdata/other", "go/build/testdata/other/file", "go/build/testdata/withvendor", "go/build/testdata/withvendor/src", "go/build/testdata/withvendor/src/a", "go/build/testdata/withvendor/src/a/b", "go/build/testdata/withvendor/src/a/vendor", "go/build/testdata/withvendor/src/a/vendor/c", "go/build/testdata/withvendor/src/a/vendor/c/d", "go/constant", "go/doc", "go/doc/comment", "go/doc/comment/testdata", "go/doc/testdata", "go/doc/testdata/examples", "go/doc/testdata/pkgdoc", "go/format", "go/importer", "go/internal", "go/internal/gccgoimporter", "go/internal/gccgoimporter/testdata", "go/internal/gcimporter", "go/internal/gcimporter/testdata", "go/internal/gcimporter/testdata/versions", "go/internal/srcimporter", "go/internal/srcimporter/testdata", "go/internal/srcimporter/testdata/issue20855", "go/internal/srcimporter/testdata/issue23092", "go/internal/srcimporter/testdata/issue24392", "go/internal/typeparams", "go/parser", "go/parser/testdata", "go/parser/testdata/issue42951", "go/parser/testdata/issue42951/not_a_file.go", "go/parser/testdata/resolution", "go/printer", "go/printer/testdata", "go/scanner", "go/token", "go/types", "go/types/testdata", "go/types/testdata/local", "hash", "hash/adler32", "hash/crc32", "hash/crc64", "hash/fnv", "hash/maphash", "html", "html/template", "html/template/testdata", "image", "image/color", "image/color/palette", "image/draw", "image/gif", "image/internal", "image/internal/imageutil", "image/jpeg", "image/png", "image/png/testdata", "image/png/testdata/pngsuite", "image/testdata", "index", "index/suffixarray", "internal", "internal/abi", "internal/abi/testdata", "internal/buildcfg", "internal/bytealg", "internal/cfg", "internal/coverage", "internal/coverage/calloc", "internal/coverage/cformat", "internal/coverage/cmerge", "internal/coverage/decodecounter", "internal/coverage/decodemeta", "internal/coverage/encodecounter", "internal/coverage/encodemeta", "internal/coverage/pods", "internal/coverage/rtcov", "internal/coverage/slicereader", "internal/coverage/slicewriter", "internal/coverage/stringtab", "internal/coverage/test", "internal/coverage/uleb128", "internal/cpu", "internal/dag", "internal/diff", "internal/diff/testdata", "internal/fmtsort", "internal/fuzz", "internal/goarch", "internal/godebug", "internal/goexperiment", "internal/goos", "internal/goroot", "internal/goversion", "internal/intern", "internal/itoa", "internal/lazyregexp", "internal/lazytemplate", "internal/nettrace", "internal/obscuretestdata", "internal/oserror", "internal/pkgbits", "internal/platform", "internal/poll", "internal/profile", "internal/race", "internal/reflectlite", "internal/safefilepath", "internal/saferio", "internal/singleflight", "internal/syscall", "internal/syscall/execenv", "internal/syscall/unix", "internal/syscall/windows", "internal/syscall/windows/registry", "internal/syscall/windows/sysdll", "internal/sysinfo", "internal/testenv", "internal/testlog", "internal/testpty", "internal/trace", "internal/trace/testdata", "internal/txtar", "internal/types", "internal/types/errors", "internal/types/testdata", "internal/types/testdata/check", "internal/types/testdata/check/decls2", "internal/types/testdata/check/importdecl0", "internal/types/testdata/check/importdecl1", "internal/types/testdata/check/issue25008", "internal/types/testdata/examples", "internal/types/testdata/fixedbugs", "internal/types/testdata/spec", "internal/unsafeheader", "internal/xcoff", "internal/xcoff/testdata", "io", "io/fs", "io/ioutil", "io/ioutil/testdata", "log", "log/syslog", "maps", "math", "math/big", "math/bits", "math/cmplx", "math/rand", "mime", "mime/multipart", "mime/multipart/testdata", "mime/quotedprintable", "mime/testdata", "net", "net/http", "net/http/cgi", "net/http/cgi/testdata", "net/http/cookiejar", "net/http/fcgi", "net/http/httptest", "net/http/httptrace", "net/http/httputil", "net/http/internal", "net/http/internal/ascii", "net/http/internal/testcert", "net/http/pprof", "net/http/testdata", "net/internal", "net/internal/socktest", "net/mail", "net/netip", "net/rpc", "net/rpc/jsonrpc", "net/smtp", "net/testdata", "net/textproto", "net/url", "os", "os/exec", "os/exec/internal", "os/exec/internal/fdtest", "os/signal", "os/testdata", "os/testdata/dirfs", "os/testdata/dirfs/dir", "os/testdata/issue37161", "os/user", "path", "path/filepath", "plugin", "reflect", "reflect/internal", "reflect/internal/example1", "reflect/internal/example2", "regexp", "regexp/syntax", "regexp/testdata", "runtime", "runtime/asan", "runtime/cgo", "runtime/coverage", "runtime/coverage/testdata", "runtime/coverage/testdata/issue56006", "runtime/debug", "runtime/debug/testdata", "runtime/debug/testdata/fuzz", "runtime/debug/testdata/fuzz/FuzzParseBuildInfoRoundTrip", "runtime/internal", "runtime/internal/atomic", "runtime/internal/math", "runtime/internal/startlinetest", "runtime/internal/sys", "runtime/internal/syscall", "runtime/metrics", "runtime/msan", "runtime/pprof", "runtime/pprof/testdata", "runtime/pprof/testdata/mappingtest", "runtime/race", "runtime/race/internal", "runtime/race/internal/amd64v1", "runtime/race/internal/amd64v3", "runtime/race/testdata", "runtime/testdata", "runtime/testdata/testexithooks", "runtime/testdata/testfaketime", "runtime/testdata/testprog", "runtime/testdata/testprogcgo", "runtime/testdata/testprogcgo/windows", "runtime/testdata/testprognet", "runtime/testdata/testwinlib", "runtime/testdata/testwinlibsignal", "runtime/testdata/testwinlibthrow", "runtime/testdata/testwinsignal", "runtime/trace", "sort", "strconv", "strconv/testdata", "strings", "sync", "sync/atomic", "syscall", "syscall/js", "testdata", "testing", "testing/fstest", "testing/internal", "testing/internal/testdeps", "testing/iotest", "testing/quick", "text", "text/scanner", "text/tabwriter", "text/template", "text/template/parse", "text/template/testdata", "time", "time/testdata", "time/tzdata", "unicode", "unicode/utf16", "unicode/utf8", "unsafe", "vendor", "vendor/golang.org", "vendor/golang.org/x", "vendor/golang.org/x/crypto", "vendor/golang.org/x/crypto/chacha20", "vendor/golang.org/x/crypto/chacha20poly1305", "vendor/golang.org/x/crypto/cryptobyte", "vendor/golang.org/x/crypto/cryptobyte/asn1", "vendor/golang.org/x/crypto/hkdf", "vendor/golang.org/x/crypto/internal", "vendor/golang.org/x/crypto/internal/alias", "vendor/golang.org/x/crypto/internal/poly1305", "vendor/golang.org/x/net", "vendor/golang.org/x/net/dns", "vendor/golang.org/x/net/dns/dnsmessage", "vendor/golang.org/x/net/http", "vendor/golang.org/x/net/http/httpguts", "vendor/golang.org/x/net/http/httpproxy", "vendor/golang.org/x/net/http2", "vendor/golang.org/x/net/http2/hpack", "vendor/golang.org/x/net/idna", "vendor/golang.org/x/net/lif", "vendor/golang.org/x/net/nettest", "vendor/golang.org/x/net/route", "vendor/golang.org/x/sys", "vendor/golang.org/x/sys/cpu", "vendor/golang.org/x/text", "vendor/golang.org/x/text/secure", "vendor/golang.org/x/text/secure/bidirule", "vendor/golang.org/x/text/transform", "vendor/golang.org/x/text/unicode", "vendor/golang.org/x/text/unicode/bidi", "vendor/golang.org/x/text/unicode/norm", "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/fix/testdata", "cmd/gc", "cmd/go/testdata/errmsg", "cmd/go/testdata/local", "cmd/go/testdata/local/easysub", "cmd/go/testdata/local/sub", "cmd/go/testdata/local/sub/sub", "cmd/go/testdata/src", "cmd/go/testdata/src/go-cmd-test", "cmd/go/testdata/testimport", "cmd/go/testdata/testimport/p1", "cmd/go/testdata/testimport/p2", "cmd/godoc", "cmd/ld", "cmd/yacc", "lib9", "lib9/fmt", "lib9/utf", "libbio", "libmach", "pkg", "pkg/archive", "pkg/archive/tar", "pkg/archive/tar/testdata", "pkg/archive/zip", "pkg/archive/zip/testdata", "pkg/bufio", "pkg/builtin", "pkg/bytes", "pkg/compress", "pkg/compress/bzip2", "pkg/compress/flate", "pkg/compress/gzip", "pkg/compress/lzw", "pkg/compress/testdata", "pkg/compress/zlib", "pkg/container", "pkg/container/heap", "pkg/container/list", "pkg/container/ring", "pkg/crypto", "pkg/crypto/aes", "pkg/crypto/cipher", "pkg/crypto/des", "pkg/crypto/dsa", "pkg/crypto/ecdsa", "pkg/crypto/elliptic", "pkg/crypto/hmac", "pkg/crypto/md5", "pkg/crypto/rand", "pkg/crypto/rc4", "pkg/crypto/rsa", "pkg/crypto/sha1", "pkg/crypto/sha256", "pkg/crypto/sha512", "pkg/crypto/subtle", "pkg/crypto/tls", "pkg/crypto/x509", "pkg/crypto/x509/pkix", "pkg/database", "pkg/database/sql", "pkg/database/sql/driver", "pkg/debug", "pkg/debug/dwarf", "pkg/debug/dwarf/testdata", "pkg/debug/elf", "pkg/debug/elf/testdata", "pkg/debug/gosym", "pkg/debug/macho", "pkg/debug/macho/testdata", "pkg/debug/pe", "pkg/debug/pe/testdata", "pkg/encoding", "pkg/encoding/ascii85", "pkg/encoding/asn1", "pkg/encoding/base32", "pkg/encoding/base64", "pkg/encoding/binary", "pkg/encoding/csv", "pkg/encoding/gob", "pkg/encoding/hex", "pkg/encoding/json", "pkg/encoding/json/testdata", "pkg/encoding/pem", "pkg/encoding/xml", "pkg/errors", "pkg/expvar", "pkg/flag", "pkg/fmt", "pkg/go", "pkg/go/ast", "pkg/go/build", "pkg/go/build/testdata", "pkg/go/build/testdata/other", "pkg/go/build/testdata/other/file", "pkg/go/doc", "pkg/go/doc/testdata", "pkg/go/parser", "pkg/go/parser/testdata", "pkg/go/printer", "pkg/go/printer/testdata", "pkg/go/scanner", "pkg/go/token", "pkg/hash", "pkg/hash/adler32", "pkg/hash/crc32", "pkg/hash/crc64", "pkg/hash/fnv", "pkg/html", "pkg/html/template", "pkg/image", "pkg/image/color", "pkg/image/draw", "pkg/image/gif", "pkg/image/jpeg", "pkg/image/png", "pkg/image/png/testdata", "pkg/image/png/testdata/pngsuite", "pkg/image/testdata", "pkg/index", "pkg/index/suffixarray", "pkg/io", "pkg/io/ioutil", "pkg/log", "pkg/log/syslog", "pkg/math", "pkg/math/big", "pkg/math/cmplx", "pkg/math/rand", "pkg/mime", "pkg/mime/multipart", "pkg/net", "pkg/net/http", "pkg/net/http/cgi", "pkg/net/http/cgi/testdata", "pkg/net/http/fcgi", "pkg/net/http/httptest", "pkg/net/http/httputil", "pkg/net/http/pprof", "pkg/net/http/testdata", "pkg/net/mail", "pkg/net/rpc", "pkg/net/rpc/jsonrpc", "pkg/net/smtp", "pkg/net/testdata", "pkg/net/textproto", "pkg/net/url", "pkg/os", "pkg/os/exec", "pkg/os/signal", "pkg/os/user", "pkg/path", "pkg/path/filepath", "pkg/reflect", "pkg/regexp", "pkg/regexp/syntax", "pkg/regexp/testdata", "pkg/runtime", "pkg/runtime/cgo", "pkg/runtime/debug", "pkg/runtime/pprof", "pkg/sort", "pkg/strconv", "pkg/strings", "pkg/sync", "pkg/sync/atomic", "pkg/syscall", "pkg/testing", "pkg/testing/iotest", "pkg/testing/quick", "pkg/text", "pkg/text/scanner", "pkg/text/tabwriter", "pkg/text/template", "pkg/text/template/parse", "pkg/text/template/testdata", "pkg/time", "pkg/unicode", "pkg/unicode/utf16", "pkg/unicode/utf8", "pkg/unsafe", "pkg/mime/multipart/testdata", "pkg/crypto/ecdsa/testdata", "pkg/go/format", "pkg/mime/testdata", "pkg/net/http/cookiejar", "pkg/runtime/race", "pkg/runtime/race/testdata", "pkg/strconv/testdata", "cmd/go/testdata/shadow", "cmd/go/testdata/shadow/root1", "cmd/go/testdata/shadow/root1/src", "cmd/go/testdata/shadow/root1/src/foo", "cmd/go/testdata/shadow/root1/src/math", "cmd/go/testdata/shadow/root2", "cmd/go/testdata/shadow/root2/src", "cmd/go/testdata/shadow/root2/src/foo", "cmd/go/testdata/src/badpkg", "cmd/go/testdata/src/cgotest", "cmd/go/testdata/src/main_test", "cmd/go/testdata/src/syntaxerror", "pkg/compress/bzip2/testdata", "pkg/compress/gzip/testdata", "pkg/crypto/rsa/testdata", "pkg/image/color/palette", "cmd/go/testdata/cgocover", "cmd/go/testdata/src/notest", "liblink", "pkg/crypto/tls/testdata", "pkg/debug/goobj", "pkg/debug/plan9obj", "pkg/debug/plan9obj/testdata", "cmd/go/testdata/src/testcycle", "cmd/go/testdata/src/testcycle/p1", "cmd/go/testdata/src/testcycle/p2", "cmd/go/testdata/src/testcycle/p3", "cmd/go/testdata/src/xtestonly", "cmd/go/testdata/testonly", "cmd/go/testdata/generate", "cmd/go/testdata/importcom", "cmd/go/testdata/importcom/src", "cmd/go/testdata/importcom/src/bad", "cmd/go/testdata/importcom/src/conflict", "cmd/go/testdata/importcom/src/works", "cmd/go/testdata/importcom/src/works/x", "cmd/go/testdata/importcom/src/wrongplace", "cmd/go/testdata/norunexample", "cmd/go/testdata/src/badc", "cmd/go/testdata/src/badtest", "cmd/go/testdata/src/badtest/badexec", "cmd/go/testdata/src/badtest/badsyntax", "cmd/go/testdata/src/badtest/badvar", "cmd/go/testdata/src/vetpkg", "cmd/go/testdata/testinternal", "cmd/go/testdata/testinternal2", "cmd/go/testdata/testinternal2/x", "cmd/go/testdata/testinternal2/x/y", "cmd/go/testdata/testinternal2/x/y/z", "cmd/go/testdata/testinternal2/x/y/z/internal", "cmd/go/testdata/testinternal2/x/y/z/internal/w", "cmd/internal/rsc.io", "cmd/internal/rsc.io/arm", "cmd/internal/rsc.io/arm/armasm", "cmd/internal/rsc.io/arm/armasm/testdata", "cmd/internal/rsc.io/x86", "cmd/internal/rsc.io/x86/x86asm", "cmd/internal/rsc.io/x86/x86asm/testdata", "cmd/pprof/internal", "cmd/pprof/internal/commands", "cmd/pprof/internal/driver", "cmd/pprof/internal/fetch", "cmd/pprof/internal/plugin", "cmd/pprof/internal/profile", "cmd/pprof/internal/report", "cmd/pprof/internal/svg", "cmd/pprof/internal/symbolizer", "cmd/pprof/internal/symbolz", "cmd/pprof/internal/tempfile", "cmd/yacc/testdata", "cmd/yacc/testdata/expr", "debug/goobj", "cmd/compile/internal/big", "cmd/compile/internal/gc/builtin", "cmd/go/testdata/src/vend", "cmd/go/testdata/src/vend/hello", "cmd/go/testdata/src/vend/subdir", "cmd/go/testdata/src/vend/vendor", "cmd/go/testdata/src/vend/vendor/p", "cmd/go/testdata/src/vend/vendor/q", "cmd/go/testdata/src/vend/vendor/strings", "cmd/go/testdata/src/vend/x", "cmd/go/testdata/src/vend/x/invalid", "cmd/go/testdata/src/vend/x/vendor", "cmd/go/testdata/src/vend/x/vendor/p", "cmd/go/testdata/src/vend/x/vendor/p/p", "cmd/go/testdata/src/vend/x/vendor/r", "cmd/go/testdata/testinternal3", "cmd/internal/asm", "cmd/newlink", "cmd/newlink/testdata", "cmd/old5a", "cmd/old6a", "cmd/old8a", "cmd/old9a", "cmd/vet/whitelist", "internal/format", "cmd/go/testdata/rundir", "cmd/go/testdata/rundir/sub", "cmd/go/testdata/src/testcycle/q1", "cmd/go/testdata/src/testdep", "cmd/go/testdata/src/testdep/p1", "cmd/go/testdata/src/testdep/p2", "cmd/go/testdata/src/testdep/p3", "cmd/go/testdata/testinternal4", "cmd/go/testdata/testinternal4/src", "cmd/go/testdata/testinternal4/src/p", "cmd/go/testdata/testinternal4/src/q", "cmd/go/testdata/testinternal4/src/q/internal", "cmd/go/testdata/testinternal4/src/q/internal/x", "cmd/go/testdata/testinternal4/src/q/j", "cmd/go/testdata/testvendor", "cmd/go/testdata/testvendor/src", "cmd/go/testdata/testvendor/src/p", "cmd/go/testdata/testvendor/src/q", "cmd/go/testdata/testvendor/src/q/vendor", "cmd/go/testdata/testvendor/src/q/vendor/x", "cmd/go/testdata/testvendor/src/q/y", "cmd/go/testdata/testvendor/src/q/z", "cmd/go/testdata/testvendor2", "cmd/go/testdata/testvendor2/src", "cmd/go/testdata/testvendor2/src/p", "cmd/go/testdata/testvendor2/vendor", "cmd/go/testdata/testvendor2/vendor/x", "golang.org/x/arch/arm/armasm/testdata", "golang.org/x/arch/x86/x86asm/testdata", "cmd/vet/internal", "cmd/vet/internal/whitelist", "cmd/vet/testdata/divergent", "cmd/vet/testdata/incomplete", "cmd/go/testdata/src/run", "cmd/go/testdata/src/run/internal", "cmd/go/testdata/src/run/subdir", "cmd/go/testdata/src/run/subdir/internal", "cmd/go/testdata/src/run/subdir/internal/private", "cmd/go/testdata/src/vend/dir1", "cmd/go/testdata/src/vend/vendor/vend", "cmd/go/testdata/src/vend/vendor/vend/dir1", "cmd/go/testdata/src/vend/vendor/vend/dir1/dir2", "internal/golang.org", "internal/golang.org/x", "internal/golang.org/x/net", "internal/golang.org/x/net/http2", "internal/golang.org/x/net/http2/hpack", "cmd/internal/unvendor", "cmd/internal/unvendor/golang.org", "cmd/internal/unvendor/golang.org/x", "cmd/internal/unvendor/golang.org/x/arch", "cmd/internal/unvendor/golang.org/x/arch/arm", "cmd/internal/unvendor/golang.org/x/arch/arm/armasm", "cmd/internal/unvendor/golang.org/x/arch/arm/armasm/testdata", "cmd/internal/unvendor/golang.org/x/arch/x86", "cmd/internal/unvendor/golang.org/x/arch/x86/x86asm", "cmd/internal/unvendor/golang.org/x/arch/x86/x86asm/testdata", "cmd/compile/internal/gc/testdata", "cmd/compile/internal/gc/testdata/gen", "cmd/compile/internal/ssa/gen", "cmd/go/testdata/src/benchfatal", "cmd/internal/pprof", "cmd/internal/pprof/commands", "cmd/internal/pprof/driver", "cmd/internal/pprof/fetch", "cmd/internal/pprof/plugin", "cmd/internal/pprof/profile", "cmd/internal/pprof/report", "cmd/internal/pprof/svg", "cmd/internal/pprof/symbolizer", "cmd/internal/pprof/symbolz", "cmd/internal/pprof/tempfile", "vendor/golang.org/x/net/lex", "vendor/golang.org/x/net/lex/httplex", "cmd/vet/internal/cfg", "vendor/golang_org", "vendor/golang_org/x", "vendor/golang_org/x/net", "vendor/golang_org/x/net/http2", "vendor/golang_org/x/net/http2/hpack", "vendor/golang_org/x/net/lex", "vendor/golang_org/x/net/lex/httplex", "vendor/golang_org/x/net/route", "cmd/go/testdata/src/canonical", "cmd/go/testdata/src/canonical/a", "cmd/go/testdata/src/canonical/a/vendor", "cmd/go/testdata/src/canonical/a/vendor/c", "cmd/go/testdata/src/canonical/b", "cmd/go/testdata/src/canonical/d", "cmd/go/testdata/src/cgocover", "cmd/go/testdata/src/cgocover2", "cmd/go/testdata/src/cgocover3", "cmd/go/testdata/src/cgocover4", "cmd/go/testdata/src/dupload", "cmd/go/testdata/src/dupload/p", "cmd/go/testdata/src/dupload/p2", "cmd/go/testdata/src/dupload/vendor", "cmd/go/testdata/src/dupload/vendor/p", "cmd/go/testdata/src/gencycle", "cmd/go/testdata/src/importmain", "cmd/go/testdata/src/importmain/ismain", "cmd/go/testdata/src/importmain/test", "cmd/go/testdata/src/my.pkg", "cmd/go/testdata/src/my.pkg/main", "cmd/go/testdata/src/testrace", "golang.org/x/arch/ppc64/ppc64asm/testdata", "cmd/vet/all", "cmd/vet/all/whitelist", "crypto/internal/cipherhw", "database/sql/internal", "go/build/testdata/ignored", "internal/pprof", "internal/pprof/profile", "runtime/pprof/internal", "runtime/pprof/internal/protopprof", "vendor/golang_org/x/crypto", "vendor/golang_org/x/crypto/chacha20poly1305", "vendor/golang_org/x/crypto/chacha20poly1305/internal", "vendor/golang_org/x/crypto/chacha20poly1305/internal/chacha20", "vendor/golang_org/x/crypto/curve25519", "vendor/golang_org/x/crypto/poly1305", "vendor/golang_org/x/net/idna", "vendor/golang_org/x/net/lif", "vendor/golang_org/x/text", "vendor/golang_org/x/text/transform", "vendor/golang_org/x/text/unicode", "vendor/golang_org/x/text/unicode/norm", "vendor/golang_org/x/text/width", "cmd/go/testdata/testterminal18153", "cmd/go/testdata/src/empty", "cmd/go/testdata/src/empty/pkg", "cmd/go/testdata/src/empty/pkgtest", "cmd/go/testdata/src/empty/pkgtestxtest", "cmd/go/testdata/src/empty/pkgxtest", "cmd/go/testdata/src/empty/test", "cmd/go/testdata/src/empty/testxtest", "cmd/go/testdata/src/empty/xtest", "cmd/compile/internal/gc/testdata/reproducible", "cmd/go/internal/buildid", "cmd/go/testdata/src/bench", "github.com/google/pprof/doc", "github.com/google/pprof/doc/developer", "github.com/google/pprof/internal/driver/testdata", "github.com/google/pprof/internal/graph/testdata", "github.com/google/pprof/internal/proftest", "github.com/google/pprof/internal/report/testdata", "github.com/google/pprof/profile/testdata", "github.com/google/pprof/proto", "github.com/google/pprof/third_party/svg", "github.com/ianlancetaylor/demangle/testdata", "runtime/pprof/internal/profile", "vendor/golang_org/x/net/nettest", "vendor/golang_org/x/net/proxy", "vendor/golang_org/x/text/secure", "vendor/golang_org/x/text/secure/bidirule", "vendor/golang_org/x/text/unicode/bidi", "cmd/go/testdata/src/cgoasm", "cmd/go/testdata/src/exclude", "cmd/go/testdata/src/exclude/empty", "cmd/go/testdata/src/exclude/ignore", "cmd/go/testdata/src/testregexp", "cmd/go/testdata/src/testlist", "cmd/go/testdata/modlegacy", "cmd/go/testdata/modlegacy/src", "cmd/go/testdata/modlegacy/src/new", "cmd/go/testdata/modlegacy/src/new/p1", "cmd/go/testdata/modlegacy/src/new/p2", "cmd/go/testdata/modlegacy/src/new/sub", "cmd/go/testdata/modlegacy/src/new/sub/inner", "cmd/go/testdata/modlegacy/src/new/sub/inner/x", "cmd/go/testdata/modlegacy/src/new/sub/x", "cmd/go/testdata/modlegacy/src/new/sub/x/v1", "cmd/go/testdata/modlegacy/src/new/sub/x/v1/y", "cmd/go/testdata/modlegacy/src/old", "cmd/go/testdata/modlegacy/src/old/p1", "cmd/go/testdata/modlegacy/src/old/p2", "cmd/go/testdata/src/complex", "cmd/go/testdata/src/complex/nest", "cmd/go/testdata/src/complex/nest/sub", "cmd/go/testdata/src/complex/nest/sub/test12", "cmd/go/testdata/src/complex/nest/sub/test23", "cmd/go/testdata/src/complex/nest/sub/vendor", "cmd/go/testdata/src/complex/nest/sub/vendor/v2", "cmd/go/testdata/src/complex/nest/vendor", "cmd/go/testdata/src/complex/nest/vendor/v1", "cmd/go/testdata/src/complex/nest/vendor/v2", "cmd/go/testdata/src/complex/nest/vendor/v3", "cmd/go/testdata/src/complex/vendor", "cmd/go/testdata/src/complex/vendor/v", "cmd/go/testdata/src/complex/w", "cmd/go/testdata/src/coverasm", "cmd/go/testdata/src/coverbad", "cmd/go/testdata/src/coverdep", "cmd/go/testdata/src/coverdep/p1", "cmd/go/testdata/src/not_main", "cmd/go/testdata/src/skipper", "cmd/go/testdata/src/sleepy1", "cmd/go/testdata/src/sleepy2", "cmd/go/testdata/src/sleepybad", "cmd/go/testdata/src/vetcycle", "cmd/internal/goobj/testdata", "cmd/internal/goobj/testdata/mycgo", "cmd/link/internal/objfile", "github.com/google/pprof/internal/binutils/testdata", "github.com/google/pprof/internal/report/testdata/sample", "golang.org/x/arch/arm64/arm64asm/testdata", "os/signal/internal", "os/signal/internal/pty", "vendor/golang_org/x/crypto/cryptobyte", "vendor/golang_org/x/crypto/cryptobyte/asn1", "vendor/golang_org/x/net/internal", "vendor/golang_org/x/net/internal/nettest", "cmd/go/testdata/src/coverdep2", "cmd/go/testdata/src/coverdep2/p1", "cmd/go/testdata/src/coverdep2/p2", "cmd/go/testdata/src/multimain", "cmd/go/testdata/src/testcache", "cmd/go/testdata/src/vetfail", "cmd/go/testdata/src/vetfail/p1", "cmd/go/testdata/src/vetfail/p2", "cmd/go/testdata/src/coverdot1", "cmd/go/testdata/src/coverdot2", "cmd/go/internal/dirhash", "cmd/go/internal/imports/testdata/import1", "cmd/go/internal/modfetch/bitbucket", "cmd/go/internal/modfetch/github", "cmd/go/internal/modfetch/gitrepo", "cmd/go/internal/modfetch/googlesource", "cmd/go/internal/modfile", "cmd/go/internal/modfile/testdata", "cmd/go/internal/module", "cmd/go/internal/semver", "cmd/go/internal/vgo", "cmd/go/internal/web2", "cmd/go/internal/webtest", "cmd/go/testdata/badmod", "cmd/go/testdata/importcycle", "cmd/go/testdata/importcycle/src", "cmd/go/testdata/importcycle/src/selfimport", "cmd/go/testdata/src/hello", "cmd/go/testdata/testcover", "cmd/go/testdata/testcover/pkg1", "cmd/go/testdata/testcover/pkg2", "cmd/go/testdata/testcover/pkg3", "cmd/go/testdata/vendormod", "cmd/go/testdata/vendormod/w", "cmd/go/testdata/vendormod/x", "cmd/go/testdata/vendormod/y", "cmd/go/testdata/vendormod/z", "cmd/link/internal/ld/testdata/httptest/src", "cmd/link/internal/ld/testdata/httptest/src/main", "cmd/link/internal/ld/testdata/issue25459/src", "cmd/link/internal/ld/testdata/issue25459/src/a", "cmd/link/internal/ld/testdata/issue25459/src/main", "github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM", "github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents", "github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Resources", "github.com/google/pprof/internal/binutils/testdata/exe_mac_64.dSYM/Contents/Resources/DWARF", "github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM", "github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents", "github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Resources", "github.com/google/pprof/internal/binutils/testdata/lib_mac_64.dSYM/Contents/Resources/DWARF", "github.com/google/pprof/third_party/d3", "golang.org/x/crypto", "golang.org/x/crypto/ssh", "golang.org/x/crypto/ssh/terminal", "golang.org/x/sys/windows/registry", "golang.org/x/sys/windows/svc", "golang.org/x/sys/windows/svc/debug", "golang.org/x/sys/windows/svc/eventlog", "golang.org/x/sys/windows/svc/example", "golang.org/x/sys/windows/svc/mgr", "crypto/internal/subtle", "vendor/golang_org/x/crypto/internal", "vendor/golang_org/x/crypto/internal/chacha20", "vendor/golang_org/x/net/dns", "vendor/golang_org/x/net/dns/dnsmessage", "vendor/golang_org/x/net/http", "vendor/golang_org/x/net/http/httpguts", "vendor/golang_org/x/net/http/httpproxy", "cmd/go/internal/txtar", "cmd/go/testdata/src/testnorun", "cmd/go/testdata/testonly2", "cmd/link/internal/ld/testdata/issue26237/src", "cmd/link/internal/ld/testdata/issue26237/src/b.dir", "cmd/link/internal/ld/testdata/issue26237/src/main", "cmd/go/internal/renameio", "golang.org/x/tools/go/analysis/internal/facts", "golang.org/x/tools/go/analysis/passes/pkgfact", "cmd/vet/testdata/src", "cmd/vet/testdata/src/asm", "cmd/vet/testdata/src/assign", "cmd/vet/testdata/src/atomic", "cmd/vet/testdata/src/bool", "cmd/vet/testdata/src/buildtag", "cmd/vet/testdata/src/cgo", "cmd/vet/testdata/src/composite", "cmd/vet/testdata/src/copylock", "cmd/vet/testdata/src/deadcode", "cmd/vet/testdata/src/httpresponse", "cmd/vet/testdata/src/lostcancel", "cmd/vet/testdata/src/method", "cmd/vet/testdata/src/nilfunc", "cmd/vet/testdata/src/print", "cmd/vet/testdata/src/rangeloop", "cmd/vet/testdata/src/shift", "cmd/vet/testdata/src/structtag", "cmd/vet/testdata/src/tagtest", "cmd/vet/testdata/src/testingpkg", "cmd/vet/testdata/src/unmarshal", "cmd/vet/testdata/src/unsafeptr", "cmd/vet/testdata/src/unused", "internal/x", "internal/x/crypto", "internal/x/crypto/chacha20poly1305", "internal/x/crypto/cryptobyte", "internal/x/crypto/cryptobyte/asn1", "internal/x/crypto/curve25519", "internal/x/crypto/hkdf", "internal/x/crypto/internal", "internal/x/crypto/internal/chacha20", "internal/x/crypto/poly1305", "internal/x/net", "internal/x/net/dns", "internal/x/net/dns/dnsmessage", "internal/x/net/http", "internal/x/net/http/httpguts", "internal/x/net/http/httpproxy", "internal/x/net/http2", "internal/x/net/http2/hpack", "internal/x/net/idna", "internal/x/net/internal", "internal/x/net/internal/nettest", "internal/x/net/lif", "internal/x/net/nettest", "internal/x/net/route", "internal/x/text", "internal/x/text/secure", "internal/x/text/secure/bidirule", "internal/x/text/transform", "internal/x/text/unicode", "internal/x/text/unicode/bidi", "internal/x/text/unicode/norm", "cmd/vet/testdata/src/print2", "cmd/go/internal/note", "cmd/go/internal/sumweb", "cmd/go/internal/tlog", "cmd/go/testdata/testcover/pkg4", "crypto/ed25519/internal", "crypto/ed25519/internal/edwards25519", "vendor/golang.org/x/crypto/curve25519", "vendor/golang.org/x/crypto/internal/chacha20", "vendor/golang.org/x/crypto/internal/subtle", "vendor/golang.org/x/crypto/poly1305", "cmd/internal/diff", "cmd/internal/goobj2", "golang.org/x/crypto/ed25519", "golang.org/x/crypto/ed25519/internal", "golang.org/x/crypto/ed25519/internal/edwards25519", "golang.org/x/xerrors", "golang.org/x/xerrors/internal", "internal/execabs", "cmd/oldlink", "cmd/oldlink/internal", "cmd/oldlink/internal/amd64", "cmd/oldlink/internal/arm", "cmd/oldlink/internal/arm64", "cmd/oldlink/internal/ld", "cmd/oldlink/internal/ld/testdata", "cmd/oldlink/internal/ld/testdata/httptest", "cmd/oldlink/internal/ld/testdata/httptest/main", "cmd/oldlink/internal/ld/testdata/issue10978", "cmd/oldlink/internal/ld/testdata/issue25459", "cmd/oldlink/internal/ld/testdata/issue25459/a", "cmd/oldlink/internal/ld/testdata/issue25459/main", "cmd/oldlink/internal/ld/testdata/issue26237", "cmd/oldlink/internal/ld/testdata/issue26237/b.dir", "cmd/oldlink/internal/ld/testdata/issue26237/main", "cmd/oldlink/internal/ld/testdata/issue32233", "cmd/oldlink/internal/ld/testdata/issue32233/lib", "cmd/oldlink/internal/ld/testdata/issue32233/main", "cmd/oldlink/internal/loadelf", "cmd/oldlink/internal/loader", "cmd/oldlink/internal/loadmacho", "cmd/oldlink/internal/loadpe", "cmd/oldlink/internal/loadxcoff", "cmd/oldlink/internal/mips", "cmd/oldlink/internal/mips64", "cmd/oldlink/internal/objfile", "cmd/oldlink/internal/ppc64", "cmd/oldlink/internal/riscv64", "cmd/oldlink/internal/s390x", "cmd/oldlink/internal/sym", "cmd/oldlink/internal/wasm", "cmd/oldlink/internal/x86", "crypto/x509/internal/macOS", "cmd/link/testdata/testPErsrc", "golang.org/x/tools/internal/lsp", "golang.org/x/tools/internal/lsp/fuzzy", "go/types/fixedbugs", "cmd/link/testdata/testPErsrc-complex", "cmd/compile/internal/syntax/testdata/go2", "cmd/compile/internal/typecheck/builtin", "cmd/compile/internal/types2/testdata/check", "cmd/compile/internal/types2/testdata/check/decls2", "cmd/compile/internal/types2/testdata/check/importdecl0", "cmd/compile/internal/types2/testdata/check/importdecl1", "cmd/compile/internal/types2/testdata/check/issue25008", "cmd/compile/internal/types2/testdata/examples", "cmd/compile/internal/types2/testdata/fixedbugs", "crypto/ed25519/internal/edwards25519/field", "crypto/ed25519/internal/edwards25519/field/_asm", "crypto/elliptic/internal", "crypto/elliptic/internal/fiat", "go/types/testdata/check", "go/types/testdata/check/decls2", "go/types/testdata/check/importdecl0", "go/types/testdata/check/importdecl1", "go/types/testdata/check/issue25008", "go/types/testdata/examples", "go/types/testdata/fixedbugs", "cmd/compile/internal/types2/testdata/spec", "golang.org/x/tools/txtar", "constraints", "crypto/elliptic/internal/nistec", "go/types/testdata/spec", "vendor/golang.org/x/crypto/curve25519/internal", "vendor/golang.org/x/crypto/curve25519/internal/field", "cmd/cov", "cmd/ebnflint", "cmd/godefs", "cmd/goinstall", "cmd/gomake", "cmd/gopack", "cmd/gotest", "cmd/govet", "cmd/goyacc", "cmd/hgpatch", "cmd/prof", "pkg/asn1", "pkg/big", "pkg/cmath", "pkg/container/vector", "pkg/crypto/block", "pkg/crypto/blowfish", "pkg/crypto/cast5", "pkg/crypto/md4", "pkg/crypto/ocsp", "pkg/crypto/openpgp", "pkg/crypto/openpgp/armor", "pkg/crypto/openpgp/error", "pkg/crypto/openpgp/packet", "pkg/crypto/openpgp/s2k", "pkg/crypto/ripemd160", "pkg/crypto/twofish", "pkg/crypto/xtea", "pkg/debug/proc", "pkg/ebnf", "pkg/encoding/git85", "pkg/encoding/line", "pkg/exec", "pkg/exp", "pkg/exp/datafmt", "pkg/exp/draw", "pkg/exp/draw/x11", "pkg/exp/eval", "pkg/exp/ogle", "pkg/exp/wingui", "pkg/go/typechecker", "pkg/go/typechecker/testdata", "pkg/gob", "pkg/html/testdata", "pkg/html/testdata/webkit", "pkg/http", "pkg/http/cgi", "pkg/http/cgi/testdata", "pkg/http/httptest", "pkg/http/pprof", "pkg/http/testdata", "pkg/json", "pkg/net/dict", "pkg/netchan", "pkg/os/inotify", "pkg/patch", "pkg/rand", "pkg/rpc", "pkg/rpc/jsonrpc", "pkg/runtime/386", "pkg/runtime/amd64", "pkg/runtime/arm", "pkg/runtime/darwin", "pkg/runtime/darwin/386", "pkg/runtime/darwin/amd64", "pkg/runtime/freebsd", "pkg/runtime/freebsd/386", "pkg/runtime/freebsd/amd64", "pkg/runtime/linux", "pkg/runtime/linux/386", "pkg/runtime/linux/amd64", "pkg/runtime/linux/arm", "pkg/runtime/plan9", "pkg/runtime/plan9/386", "pkg/runtime/windows", "pkg/runtime/windows/386", "pkg/scanner", "pkg/smtp", "pkg/syslog", "pkg/tabwriter", "pkg/template", "pkg/testing/script", "pkg/try", "pkg/utf16", "pkg/utf8", "pkg/websocket", "pkg/xml", "cmd/gofix", "cmd/gofix/testdata", "cmd/gotry", "cmd/gotype", "cmd/gotype/testdata", "pkg/go/types", "pkg/go/types/testdata", "pkg/http/fcgi", "pkg/image/ycbcr", "pkg/exp/gui", "pkg/exp/gui/x11", "pkg/go/build/cgotest", "pkg/http/spdy", "pkg/image/bmp", "pkg/image/tiff", "pkg/mail", "pkg/crypto/openpgp/elgamal", "pkg/csv", "pkg/exp/regexp", "pkg/exp/regexp/syntax", "pkg/exp/template", "pkg/go/build/cmdtest", "pkg/go/build/pkgtest", "pkg/runtime/windows/amd64", "pkg/exp/norm", "pkg/exp/template/html", "pkg/html/testdata/webkit/scripted", "pkg/image/tiff/testdata", "pkg/old", "pkg/old/template", "pkg/runtime/openbsd", "pkg/runtime/openbsd/amd64", "pkg/template/parse", "pkg/template/testdata", "pkg/url"}