Файловый менеджер - Редактировать - /var/www/html/objabi.zip
Ðазад
PK ! ���t� � pkgspecial.gonu �[��� // Copyright 2023 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package objabi import "sync" // PkgSpecial indicates special build properties of a given runtime-related // package. type PkgSpecial struct { // Runtime indicates that this package is "runtime" or imported by // "runtime". This has several effects (which maybe should be split out): // // - Implicit allocation is disallowed. // // - Various runtime pragmas are enabled. // // - Optimizations are always enabled. // // This should be set for runtime and all packages it imports, and may be // set for additional packages. Runtime bool // NoInstrument indicates this package should not receive sanitizer // instrumentation. In many of these, instrumentation could cause infinite // recursion. This is all runtime packages, plus those that support the // sanitizers. NoInstrument bool // NoRaceFunc indicates functions in this package should not get // racefuncenter/racefuncexit instrumentation Memory accesses in these // packages are either uninteresting or will cause false positives. NoRaceFunc bool // AllowAsmABI indicates that assembly in this package is allowed to use ABI // selectors in symbol names. Generally this is needed for packages that // interact closely with the runtime package or have performance-critical // assembly. AllowAsmABI bool } var runtimePkgs = []string{ "runtime", "runtime/internal/atomic", "runtime/internal/math", "runtime/internal/sys", "runtime/internal/syscall", "internal/abi", "internal/bytealg", "internal/chacha8rand", "internal/coverage/rtcov", "internal/cpu", "internal/goarch", "internal/godebugs", "internal/goexperiment", "internal/goos", } // extraNoInstrumentPkgs is the set of packages in addition to runtimePkgs that // should have NoInstrument set. var extraNoInstrumentPkgs = []string{ "runtime/race", "runtime/msan", "runtime/asan", // We omit bytealg even though it's imported by runtime because it also // backs a lot of package bytes. Currently we don't have a way to omit race // instrumentation when used from the runtime while keeping race // instrumentation when used from user code. Somehow this doesn't seem to // cause problems, though we may be skating on thin ice. See #61204. "-internal/bytealg", } var noRaceFuncPkgs = []string{"sync", "sync/atomic"} var allowAsmABIPkgs = []string{ "runtime", "reflect", "syscall", "internal/bytealg", "internal/chacha8rand", "runtime/internal/syscall", "runtime/internal/startlinetest", } var ( pkgSpecials map[string]PkgSpecial pkgSpecialsOnce sync.Once ) // LookupPkgSpecial returns special build properties for the given package path. func LookupPkgSpecial(pkgPath string) PkgSpecial { pkgSpecialsOnce.Do(func() { // Construct pkgSpecials from various package lists. This lets us use // more flexible logic, while keeping the final map simple, and avoids // the init-time cost of a map. pkgSpecials = make(map[string]PkgSpecial) set := func(elt string, f func(*PkgSpecial)) { s := pkgSpecials[elt] f(&s) pkgSpecials[elt] = s } for _, pkg := range runtimePkgs { set(pkg, func(ps *PkgSpecial) { ps.Runtime = true; ps.NoInstrument = true }) } for _, pkg := range extraNoInstrumentPkgs { if pkg[0] == '-' { set(pkg[1:], func(ps *PkgSpecial) { ps.NoInstrument = false }) } else { set(pkg, func(ps *PkgSpecial) { ps.NoInstrument = true }) } } for _, pkg := range noRaceFuncPkgs { set(pkg, func(ps *PkgSpecial) { ps.NoRaceFunc = true }) } for _, pkg := range allowAsmABIPkgs { set(pkg, func(ps *PkgSpecial) { ps.AllowAsmABI = true }) } }) return pkgSpecials[pkgPath] } PK ! ��W�0 0 symkind.gonu �[��� // Derived from Inferno utils/6l/l.h and related files. // https://bitbucket.org/inferno-os/inferno-os/src/master/utils/6l/l.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. package objabi // A SymKind describes the kind of memory represented by a symbol. type SymKind uint8 // Defined SymKind values. // These are used to index into cmd/link/internal/sym/AbiSymKindToSymKind // // TODO(rsc): Give idiomatic Go names. // //go:generate stringer -type=SymKind const ( // An otherwise invalid zero value for the type Sxxx SymKind = iota // Executable instructions STEXT // Read only static data SRODATA // Static data that does not contain any pointers SNOPTRDATA // Static data SDATA // Statically data that is initially all 0s SBSS // Statically data that is initially all 0s and does not contain pointers SNOPTRBSS // Thread-local data that is initially all 0s STLSBSS // Debugging data SDWARFCUINFO SDWARFCONST SDWARFFCN SDWARFABSFCN SDWARFTYPE SDWARFVAR SDWARFRANGE SDWARFLOC SDWARFLINES // Coverage instrumentation counter for libfuzzer. SLIBFUZZER_8BIT_COUNTER // Coverage instrumentation counter, aux variable for cmd/cover SCOVERAGE_COUNTER SCOVERAGE_AUXVAR SSEHUNWINDINFO // Update cmd/link/internal/sym/AbiSymKindToSymKind for new SymKind values. ) PK ! ��ssb b flag_test.gonu �[��� // Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package objabi import "testing" func TestDecodeArg(t *testing.T) { t.Parallel() tests := []struct { arg, want string }{ {"", ""}, {"hello", "hello"}, {"hello\\n", "hello\n"}, {"hello\\nthere", "hello\nthere"}, {"hello\\\\there", "hello\\there"}, {"\\\\\\n", "\\\n"}, } for _, test := range tests { if got := DecodeArg(test.arg); got != test.want { t.Errorf("decodoeArg(%q) = %q, want %q", test.arg, got, test.want) } } } PK ! �hՈ � stack.gonu �[��� // Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package objabi import ( "internal/abi" "internal/buildcfg" ) func StackNosplit(race bool) int { // This arithmetic must match that in runtime/stack.go:stackNosplit. return abi.StackNosplitBase * stackGuardMultiplier(race) } // stackGuardMultiplier returns a multiplier to apply to the default // stack guard size. Larger multipliers are used for non-optimized // builds that have larger stack frames or for specific targets. func stackGuardMultiplier(race bool) int { // This arithmetic must match that in runtime/internal/sys/consts.go:StackGuardMultiplier. n := 1 // On AIX, a larger stack is needed for syscalls. if buildcfg.GOOS == "aix" { n += 1 } // The race build also needs more stack. if race { n += 1 } return n } PK ! �V^$� � head.gonu �[��� // Derived from Inferno utils/6l/l.h and related files. // https://bitbucket.org/inferno-os/inferno-os/src/master/utils/6l/l.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. package objabi import "fmt" // HeadType is the executable header type. type HeadType uint8 const ( Hunknown HeadType = iota Hdarwin Hdragonfly Hfreebsd Hjs Hlinux Hnetbsd Hopenbsd Hplan9 Hsolaris Hwasip1 Hwindows Haix ) func (h *HeadType) Set(s string) error { switch s { case "aix": *h = Haix case "darwin", "ios": *h = Hdarwin case "dragonfly": *h = Hdragonfly case "freebsd": *h = Hfreebsd case "js": *h = Hjs case "linux", "android": *h = Hlinux case "netbsd": *h = Hnetbsd case "openbsd": *h = Hopenbsd case "plan9": *h = Hplan9 case "illumos", "solaris": *h = Hsolaris case "wasip1": *h = Hwasip1 case "windows": *h = Hwindows default: return fmt.Errorf("invalid headtype: %q", s) } return nil } func (h HeadType) String() string { switch h { case Haix: return "aix" case Hdarwin: return "darwin" case Hdragonfly: return "dragonfly" case Hfreebsd: return "freebsd" case Hjs: return "js" case Hlinux: return "linux" case Hnetbsd: return "netbsd" case Hopenbsd: return "openbsd" case Hplan9: return "plan9" case Hsolaris: return "solaris" case Hwasip1: return "wasip1" case Hwindows: return "windows" } return fmt.Sprintf("HeadType(%d)", h) } PK ! `�LJ path_test.gonu �[��� // Copyright 2017 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package objabi import ( "internal/testenv" "os/exec" "strings" "testing" ) var escapeTests = []struct { Path string Escaped string }{ {"foo/bar/v1", "foo/bar/v1"}, {"foo/bar/v.1", "foo/bar/v%2e1"}, {"f.o.o/b.a.r/v1", "f.o.o/b.a.r/v1"}, {"f.o.o/b.a.r/v.1", "f.o.o/b.a.r/v%2e1"}, {"f.o.o/b.a.r/v..1", "f.o.o/b.a.r/v%2e%2e1"}, {"f.o.o/b.a.r/v..1.", "f.o.o/b.a.r/v%2e%2e1%2e"}, {"f.o.o/b.a.r/v%1", "f.o.o/b.a.r/v%251"}, {"runtime", "runtime"}, {"sync/atomic", "sync/atomic"}, {"golang.org/x/tools/godoc", "golang.org/x/tools/godoc"}, {"foo.bar/baz.quux", "foo.bar/baz%2equux"}, {"", ""}, {"%foo%bar", "%25foo%25bar"}, {"\x01\x00\x7F☺", "%01%00%7f%e2%98%ba"}, } func TestPathToPrefix(t *testing.T) { for _, tc := range escapeTests { if got := PathToPrefix(tc.Path); got != tc.Escaped { t.Errorf("expected PathToPrefix(%s) = %s, got %s", tc.Path, tc.Escaped, got) } } } func TestPrefixToPath(t *testing.T) { for _, tc := range escapeTests { got, err := PrefixToPath(tc.Escaped) if err != nil { t.Errorf("expected PrefixToPath(%s) err = nil, got %v", tc.Escaped, err) } if got != tc.Path { t.Errorf("expected PrefixToPath(%s) = %s, got %s", tc.Escaped, tc.Path, got) } } } func TestPrefixToPathError(t *testing.T) { tests := []string{ "foo%", "foo%1", "foo%%12", "foo%1g", } for _, tc := range tests { _, err := PrefixToPath(tc) if err == nil { t.Errorf("expected PrefixToPath(%s) err != nil, got nil", tc) } } } func TestRuntimePackageList(t *testing.T) { // Test that all packages imported by the runtime are marked as runtime // packages. testenv.MustHaveGoBuild(t) goCmd, err := testenv.GoTool() if err != nil { t.Fatal(err) } pkgList, err := exec.Command(goCmd, "list", "-deps", "runtime").Output() if err != nil { if err, ok := err.(*exec.ExitError); ok { t.Log(string(err.Stderr)) } t.Fatal(err) } for _, pkg := range strings.Split(strings.TrimRight(string(pkgList), "\n"), "\n") { if pkg == "unsafe" { continue } if !LookupPkgSpecial(pkg).Runtime { t.Errorf("package %s is imported by runtime, but not marked Runtime", pkg) } } } PK ! {�)�� � path.gonu �[��� // Copyright 2017 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package objabi import ( "fmt" "strconv" "strings" ) // PathToPrefix converts raw string to the prefix that will be used in the // symbol table. All control characters, space, '%' and '"', as well as // non-7-bit clean bytes turn into %xx. The period needs escaping only in the // last segment of the path, and it makes for happier users if we escape that as // little as possible. func PathToPrefix(s string) string { slash := strings.LastIndex(s, "/") // check for chars that need escaping n := 0 for r := 0; r < len(s); r++ { if c := s[r]; c <= ' ' || (c == '.' && r > slash) || c == '%' || c == '"' || c >= 0x7F { n++ } } // quick exit if n == 0 { return s } // escape const hex = "0123456789abcdef" p := make([]byte, 0, len(s)+2*n) for r := 0; r < len(s); r++ { if c := s[r]; c <= ' ' || (c == '.' && r > slash) || c == '%' || c == '"' || c >= 0x7F { p = append(p, '%', hex[c>>4], hex[c&0xF]) } else { p = append(p, c) } } return string(p) } // PrefixToPath is the inverse of PathToPrefix, replacing escape sequences with // the original character. func PrefixToPath(s string) (string, error) { percent := strings.IndexByte(s, '%') if percent == -1 { return s, nil } p := make([]byte, 0, len(s)) for i := 0; i < len(s); { if s[i] != '%' { p = append(p, s[i]) i++ continue } if i+2 >= len(s) { // Not enough characters remaining to be a valid escape // sequence. return "", fmt.Errorf("malformed prefix %q: escape sequence must contain two hex digits", s) } b, err := strconv.ParseUint(s[i+1:i+3], 16, 8) if err != nil { // Not a valid escape sequence. return "", fmt.Errorf("malformed prefix %q: escape sequence %q must contain two hex digits", s, s[i:i+3]) } p = append(p, byte(b)) i += 3 } return string(p), nil } PK ! 8���� � typekind.gonu �[��� // Copyright 2012 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package objabi // Must match runtime and reflect. // Included by cmd/gc. const ( KindBool = 1 + iota KindInt KindInt8 KindInt16 KindInt32 KindInt64 KindUint KindUint8 KindUint16 KindUint32 KindUint64 KindUintptr KindFloat32 KindFloat64 KindComplex64 KindComplex128 KindArray KindChan KindFunc KindInterface KindMap KindPtr KindSlice KindString KindStruct KindUnsafePointer KindDirectIface = 1 << 5 KindGCProg = 1 << 6 KindMask = (1 << 5) - 1 ) PK ! �lv v funcid.gonu �[��� // Copyright 2018 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package objabi import ( "internal/abi" "strings" ) var funcIDs = map[string]abi.FuncID{ "abort": abi.FuncID_abort, "asmcgocall": abi.FuncID_asmcgocall, "asyncPreempt": abi.FuncID_asyncPreempt, "cgocallback": abi.FuncID_cgocallback, "corostart": abi.FuncID_corostart, "debugCallV2": abi.FuncID_debugCallV2, "gcBgMarkWorker": abi.FuncID_gcBgMarkWorker, "rt0_go": abi.FuncID_rt0_go, "goexit": abi.FuncID_goexit, "gogo": abi.FuncID_gogo, "gopanic": abi.FuncID_gopanic, "handleAsyncEvent": abi.FuncID_handleAsyncEvent, "main": abi.FuncID_runtime_main, "mcall": abi.FuncID_mcall, "morestack": abi.FuncID_morestack, "mstart": abi.FuncID_mstart, "panicwrap": abi.FuncID_panicwrap, "runfinq": abi.FuncID_runfinq, "sigpanic": abi.FuncID_sigpanic, "systemstack_switch": abi.FuncID_systemstack_switch, "systemstack": abi.FuncID_systemstack, // Don't show in call stack but otherwise not special. "deferreturn": abi.FuncIDWrapper, } // Get the function ID for the named function in the named file. // The function should be package-qualified. func GetFuncID(name string, isWrapper bool) abi.FuncID { if isWrapper { return abi.FuncIDWrapper } if strings.HasPrefix(name, "runtime.") { if id, ok := funcIDs[name[len("runtime."):]]; ok { return id } } return abi.FuncIDNormal } PK ! ]��/� � line_test.gonu �[��� // Copyright 2019 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package objabi import ( "path/filepath" "runtime" "testing" ) // On Windows, "/foo" is reported as a relative path // (it is relative to the current drive letter), // so we need add a drive letter to test absolute path cases. func drive() string { if runtime.GOOS == "windows" { return "c:" } return "" } var absFileTests = []struct { dir string file string rewrites string abs string }{ {"/d", "f", "", "/d/f"}, {"/d", drive() + "/f", "", drive() + "/f"}, {"/d", "f/g", "", "/d/f/g"}, {"/d", drive() + "/f/g", "", drive() + "/f/g"}, {"/d", "f", "/d/f", "??"}, {"/d", "f/g", "/d/f", "g"}, {"/d", "f/g", "/d/f=>h", "h/g"}, {"/d", "f/g", "/d/f=>/h", "/h/g"}, {"/d", "f/g", "/d/f=>/h;/d/e=>/i", "/h/g"}, {"/d", "e/f", "/d/f=>/h;/d/e=>/i", "/i/f"}, } func TestAbsFile(t *testing.T) { for _, tt := range absFileTests { abs := filepath.FromSlash(AbsFile(filepath.FromSlash(tt.dir), filepath.FromSlash(tt.file), tt.rewrites)) want := filepath.FromSlash(tt.abs) if abs != want { t.Errorf("AbsFile(%q, %q, %q) = %q, want %q", tt.dir, tt.file, tt.rewrites, abs, want) } } } PK ! 4j�$ $ autotype.gonu �[��� // Derived from Inferno utils/6l/l.h and related files. // https://bitbucket.org/inferno-os/inferno-os/src/master/utils/6l/l.h // // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) // Portions Copyright © 1997-1999 Vita Nuova Limited // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com) // Portions Copyright © 2004,2006 Bruce Ellis // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others // Portions Copyright © 2009 The Go Authors. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. package objabi // Auto.name const ( A_AUTO = 1 + iota A_PARAM A_DELETED_AUTO ) PK ! 8��d@ @ zbootstrap.gonu �[��� // Code generated by go tool dist; DO NOT EDIT. package objabi PK ! ��~� � util.gonu �[��� // Copyright 2015 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package objabi import ( "fmt" "strings" "internal/buildcfg" ) const ( ElfRelocOffset = 256 MachoRelocOffset = 2048 // reserve enough space for ELF relocations GlobalDictPrefix = ".dict" // prefix for names of global dictionaries ) // HeaderString returns the toolchain configuration string written in // Go object headers. This string ensures we don't attempt to import // or link object files that are incompatible with each other. This // string always starts with "go object ". func HeaderString() string { archExtra := "" if k, v := buildcfg.GOGOARCH(); k != "" && v != "" { archExtra = " " + k + "=" + v } return fmt.Sprintf("go object %s %s %s%s X:%s\n", buildcfg.GOOS, buildcfg.GOARCH, buildcfg.Version, archExtra, strings.Join(buildcfg.Experiment.Enabled(), ",")) } PK ! x���� � reloctype_string.gonu �[��� // Code generated by "stringer -type=RelocType"; DO NOT EDIT. package objabi import "strconv" func _() { // An "invalid array index" compiler error signifies that the constant values have changed. // Re-run the stringer command to generate them again. var x [1]struct{} _ = x[R_ADDR-1] _ = x[R_ADDRPOWER-2] _ = x[R_ADDRARM64-3] _ = x[R_ADDRMIPS-4] _ = x[R_ADDROFF-5] _ = x[R_SIZE-6] _ = x[R_CALL-7] _ = x[R_CALLARM-8] _ = x[R_CALLARM64-9] _ = x[R_CALLIND-10] _ = x[R_CALLPOWER-11] _ = x[R_CALLMIPS-12] _ = x[R_CONST-13] _ = x[R_PCREL-14] _ = x[R_TLS_LE-15] _ = x[R_TLS_IE-16] _ = x[R_GOTOFF-17] _ = x[R_PLT0-18] _ = x[R_PLT1-19] _ = x[R_PLT2-20] _ = x[R_USEFIELD-21] _ = x[R_USETYPE-22] _ = x[R_USEIFACE-23] _ = x[R_USEIFACEMETHOD-24] _ = x[R_USENAMEDMETHOD-25] _ = x[R_METHODOFF-26] _ = x[R_KEEP-27] _ = x[R_POWER_TOC-28] _ = x[R_GOTPCREL-29] _ = x[R_JMPMIPS-30] _ = x[R_DWARFSECREF-31] _ = x[R_DWARFFILEREF-32] _ = x[R_ARM64_TLS_LE-33] _ = x[R_ARM64_TLS_IE-34] _ = x[R_ARM64_GOTPCREL-35] _ = x[R_ARM64_GOT-36] _ = x[R_ARM64_PCREL-37] _ = x[R_ARM64_PCREL_LDST8-38] _ = x[R_ARM64_PCREL_LDST16-39] _ = x[R_ARM64_PCREL_LDST32-40] _ = x[R_ARM64_PCREL_LDST64-41] _ = x[R_ARM64_LDST8-42] _ = x[R_ARM64_LDST16-43] _ = x[R_ARM64_LDST32-44] _ = x[R_ARM64_LDST64-45] _ = x[R_ARM64_LDST128-46] _ = x[R_POWER_TLS_LE-47] _ = x[R_POWER_TLS_IE-48] _ = x[R_POWER_TLS-49] _ = x[R_POWER_TLS_IE_PCREL34-50] _ = x[R_POWER_TLS_LE_TPREL34-51] _ = x[R_ADDRPOWER_DS-52] _ = x[R_ADDRPOWER_GOT-53] _ = x[R_ADDRPOWER_GOT_PCREL34-54] _ = x[R_ADDRPOWER_PCREL-55] _ = x[R_ADDRPOWER_TOCREL-56] _ = x[R_ADDRPOWER_TOCREL_DS-57] _ = x[R_ADDRPOWER_D34-58] _ = x[R_ADDRPOWER_PCREL34-59] _ = x[R_RISCV_JAL-60] _ = x[R_RISCV_JAL_TRAMP-61] _ = x[R_RISCV_CALL-62] _ = x[R_RISCV_PCREL_ITYPE-63] _ = x[R_RISCV_PCREL_STYPE-64] _ = x[R_RISCV_TLS_IE-65] _ = x[R_RISCV_TLS_LE-66] _ = x[R_RISCV_GOT_HI20-67] _ = x[R_RISCV_PCREL_HI20-68] _ = x[R_RISCV_PCREL_LO12_I-69] _ = x[R_RISCV_PCREL_LO12_S-70] _ = x[R_RISCV_BRANCH-71] _ = x[R_RISCV_RVC_BRANCH-72] _ = x[R_RISCV_RVC_JUMP-73] _ = x[R_PCRELDBL-74] _ = x[R_ADDRLOONG64-75] _ = x[R_ADDRLOONG64U-76] _ = x[R_ADDRLOONG64TLS-77] _ = x[R_ADDRLOONG64TLSU-78] _ = x[R_CALLLOONG64-79] _ = x[R_LOONG64_TLS_IE_PCREL_HI-80] _ = x[R_LOONG64_TLS_IE_LO-81] _ = x[R_LOONG64_GOT_HI-82] _ = x[R_LOONG64_GOT_LO-83] _ = x[R_JMPLOONG64-84] _ = x[R_ADDRMIPSU-85] _ = x[R_ADDRMIPSTLS-86] _ = x[R_ADDRCUOFF-87] _ = x[R_WASMIMPORT-88] _ = x[R_XCOFFREF-89] _ = x[R_PEIMAGEOFF-90] _ = x[R_INITORDER-91] } const _RelocType_name = "R_ADDRR_ADDRPOWERR_ADDRARM64R_ADDRMIPSR_ADDROFFR_SIZER_CALLR_CALLARMR_CALLARM64R_CALLINDR_CALLPOWERR_CALLMIPSR_CONSTR_PCRELR_TLS_LER_TLS_IER_GOTOFFR_PLT0R_PLT1R_PLT2R_USEFIELDR_USETYPER_USEIFACER_USEIFACEMETHODR_USENAMEDMETHODR_METHODOFFR_KEEPR_POWER_TOCR_GOTPCRELR_JMPMIPSR_DWARFSECREFR_DWARFFILEREFR_ARM64_TLS_LER_ARM64_TLS_IER_ARM64_GOTPCRELR_ARM64_GOTR_ARM64_PCRELR_ARM64_PCREL_LDST8R_ARM64_PCREL_LDST16R_ARM64_PCREL_LDST32R_ARM64_PCREL_LDST64R_ARM64_LDST8R_ARM64_LDST16R_ARM64_LDST32R_ARM64_LDST64R_ARM64_LDST128R_POWER_TLS_LER_POWER_TLS_IER_POWER_TLSR_POWER_TLS_IE_PCREL34R_POWER_TLS_LE_TPREL34R_ADDRPOWER_DSR_ADDRPOWER_GOTR_ADDRPOWER_GOT_PCREL34R_ADDRPOWER_PCRELR_ADDRPOWER_TOCRELR_ADDRPOWER_TOCREL_DSR_ADDRPOWER_D34R_ADDRPOWER_PCREL34R_RISCV_JALR_RISCV_JAL_TRAMPR_RISCV_CALLR_RISCV_PCREL_ITYPER_RISCV_PCREL_STYPER_RISCV_TLS_IER_RISCV_TLS_LER_RISCV_GOT_HI20R_RISCV_PCREL_HI20R_RISCV_PCREL_LO12_IR_RISCV_PCREL_LO12_SR_RISCV_BRANCHR_RISCV_RVC_BRANCHR_RISCV_RVC_JUMPR_PCRELDBLR_ADDRLOONG64R_ADDRLOONG64UR_ADDRLOONG64TLSR_ADDRLOONG64TLSUR_CALLLOONG64R_LOONG64_TLS_IE_PCREL_HIR_LOONG64_TLS_IE_LOR_LOONG64_GOT_HIR_LOONG64_GOT_LOR_JMPLOONG64R_ADDRMIPSUR_ADDRMIPSTLSR_ADDRCUOFFR_WASMIMPORTR_XCOFFREFR_PEIMAGEOFFR_INITORDER" var _RelocType_index = [...]uint16{0, 6, 17, 28, 38, 47, 53, 59, 68, 79, 88, 99, 109, 116, 123, 131, 139, 147, 153, 159, 165, 175, 184, 194, 210, 226, 237, 243, 254, 264, 273, 286, 300, 314, 328, 344, 355, 368, 387, 407, 427, 447, 460, 474, 488, 502, 517, 531, 545, 556, 578, 600, 614, 629, 652, 669, 687, 708, 723, 742, 753, 770, 782, 801, 820, 834, 848, 864, 882, 902, 922, 936, 954, 970, 980, 993, 1007, 1023, 1040, 1053, 1078, 1097, 1113, 1129, 1141, 1152, 1165, 1176, 1188, 1198, 1210, 1221} func (i RelocType) String() string { i -= 1 if i < 0 || i >= RelocType(len(_RelocType_index)-1) { return "RelocType(" + strconv.FormatInt(int64(i+1), 10) + ")" } return _RelocType_name[_RelocType_index[i]:_RelocType_index[i+1]] } PK ! Iz?I symkind_string.gonu �[��� // Code generated by "stringer -type=SymKind"; DO NOT EDIT. package objabi import "strconv" func _() { // An "invalid array index" compiler error signifies that the constant values have changed. // Re-run the stringer command to generate them again. var x [1]struct{} _ = x[Sxxx-0] _ = x[STEXT-1] _ = x[SRODATA-2] _ = x[SNOPTRDATA-3] _ = x[SDATA-4] _ = x[SBSS-5] _ = x[SNOPTRBSS-6] _ = x[STLSBSS-7] _ = x[SDWARFCUINFO-8] _ = x[SDWARFCONST-9] _ = x[SDWARFFCN-10] _ = x[SDWARFABSFCN-11] _ = x[SDWARFTYPE-12] _ = x[SDWARFVAR-13] _ = x[SDWARFRANGE-14] _ = x[SDWARFLOC-15] _ = x[SDWARFLINES-16] _ = x[SLIBFUZZER_8BIT_COUNTER-17] _ = x[SCOVERAGE_COUNTER-18] _ = x[SCOVERAGE_AUXVAR-19] _ = x[SSEHUNWINDINFO-20] } const _SymKind_name = "SxxxSTEXTSRODATASNOPTRDATASDATASBSSSNOPTRBSSSTLSBSSSDWARFCUINFOSDWARFCONSTSDWARFFCNSDWARFABSFCNSDWARFTYPESDWARFVARSDWARFRANGESDWARFLOCSDWARFLINESSLIBFUZZER_8BIT_COUNTERSCOVERAGE_COUNTERSCOVERAGE_AUXVARSSEHUNWINDINFO" var _SymKind_index = [...]uint8{0, 4, 9, 16, 26, 31, 35, 44, 51, 63, 74, 83, 95, 105, 114, 125, 134, 145, 168, 185, 201, 215} func (i SymKind) String() string { if i >= SymKind(len(_SymKind_index)-1) { return "SymKind(" + strconv.FormatInt(int64(i), 10) + ")" } return _SymKind_name[_SymKind_index[i]:_SymKind_index[i+1]] } PK ! uĖ� line.gonu �[��� // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package objabi import ( "internal/buildcfg" "os" "path/filepath" "runtime" "strings" ) // WorkingDir returns the current working directory // (or "/???" if the directory cannot be identified), // with "/" as separator. func WorkingDir() string { var path string path, _ = os.Getwd() if path == "" { path = "/???" } return filepath.ToSlash(path) } // AbsFile returns the absolute filename for file in the given directory, // as rewritten by the rewrites argument. // For unrewritten paths, AbsFile rewrites a leading $GOROOT prefix to the literal "$GOROOT". // If the resulting path is the empty string, the result is "??". // // The rewrites argument is a ;-separated list of rewrites. // Each rewrite is of the form "prefix" or "prefix=>replace", // where prefix must match a leading sequence of path elements // and is either removed entirely or replaced by the replacement. func AbsFile(dir, file, rewrites string) string { abs := file if dir != "" && !filepath.IsAbs(file) { abs = filepath.Join(dir, file) } abs, rewritten := ApplyRewrites(abs, rewrites) if !rewritten && buildcfg.GOROOT != "" && hasPathPrefix(abs, buildcfg.GOROOT) { abs = "$GOROOT" + abs[len(buildcfg.GOROOT):] } // Rewrite paths to match the slash convention of the target. // This helps ensure that cross-compiled distributions remain // bit-for-bit identical to natively compiled distributions. if runtime.GOOS == "windows" { abs = strings.ReplaceAll(abs, `\`, "/") } if abs == "" { abs = "??" } return abs } // ApplyRewrites returns the filename for file in the given directory, // as rewritten by the rewrites argument. // // The rewrites argument is a ;-separated list of rewrites. // Each rewrite is of the form "prefix" or "prefix=>replace", // where prefix must match a leading sequence of path elements // and is either removed entirely or replaced by the replacement. func ApplyRewrites(file, rewrites string) (string, bool) { start := 0 for i := 0; i <= len(rewrites); i++ { if i == len(rewrites) || rewrites[i] == ';' { if new, ok := applyRewrite(file, rewrites[start:i]); ok { return new, true } start = i + 1 } } return file, false } // applyRewrite applies the rewrite to the path, // returning the rewritten path and a boolean // indicating whether the rewrite applied at all. func applyRewrite(path, rewrite string) (string, bool) { prefix, replace := rewrite, "" if j := strings.LastIndex(rewrite, "=>"); j >= 0 { prefix, replace = rewrite[:j], rewrite[j+len("=>"):] } if prefix == "" || !hasPathPrefix(path, prefix) { return path, false } if len(path) == len(prefix) { return replace, true } if replace == "" { return path[len(prefix)+1:], true } return replace + path[len(prefix):], true } // Does s have t as a path prefix? // That is, does s == t or does s begin with t followed by a slash? // For portability, we allow ASCII case folding, so that hasPathPrefix("a/b/c", "A/B") is true. // Similarly, we allow slash folding, so that hasPathPrefix("a/b/c", "a\\b") is true. // We do not allow full Unicode case folding, for fear of causing more confusion // or harm than good. (For an example of the kinds of things that can go wrong, // see http://article.gmane.org/gmane.linux.kernel/1853266.) func hasPathPrefix(s string, t string) bool { if len(t) > len(s) { return false } var i int for i = 0; i < len(t); i++ { cs := int(s[i]) ct := int(t[i]) if 'A' <= cs && cs <= 'Z' { cs += 'a' - 'A' } if 'A' <= ct && ct <= 'Z' { ct += 'a' - 'A' } if cs == '\\' { cs = '/' } if ct == '\\' { ct = '/' } if cs != ct { return false } } return i >= len(s) || s[i] == '/' || s[i] == '\\' } PK ! ݑ��&