| // 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(), ",")) | |
| } | |