Commit 1b9049b5 authored by Michael Hudson-Doyle's avatar Michael Hudson-Doyle Committed by Brad Fitzpatrick

cmd/internal/ld: make ELF constants explicit

c2go produced accurate but complex constant definitions like
"ElfSymBindLocal  = 0 + iota - 67" which break when any constants
are added above them in the list. Change them to explicit values
in separate blocks by class. I wrote a little program (using awk)
to dump the values of the constants:

    https://gist.github.com/mwhudson/82f82008279a38ce584e

and confirmed that its output before and after this change is the
same.

Change-Id: Ib4aea4a0d688a16cdcb76af4715d1a97ec0f013c
Reviewed-on: https://go-review.googlesource.com/6581
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 0153137a
......@@ -37,94 +37,124 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
const (
ElfClassNone = 0 + iota
ElfClass32
ElfClass64
ElfDataNone = 0 + iota - 3
ElfDataLsb
ElfDataMsb
ElfTypeNone = 0 + iota - 6
ElfTypeRelocatable
ElfTypeExecutable
ElfTypeSharedObject
ElfTypeCore
ElfMachNone = 0 + iota - 11
ElfMach32100
ElfMachSparc
ElfMach386
ElfMach68000
ElfMach88000
ElfMach486
ElfMach860
ElfMachMips
ElfMachS370
ElfMachMipsLe
ElfMachParisc = 15
ElfMachVpp500 = 17 + iota - 23
ElfMachSparc32Plus
ElfMach960
ElfMachPower
ElfMachPower64
ElfMachS390
ElfMachV800 = 36 + iota - 29
ElfMachFr20
ElfMachRh32
ElfMachRce
ElfMachArm
ElfMachAlpha
ElfMachSH
ElfMachSparc9
ElfMachAmd64 = 62
ElfAbiNone = 0
ElfAbiSystemV = 0 + iota - 39
ElfAbiHPUX
ElfAbiNetBSD
ElfAbiLinux
ElfAbiSolaris = 6 + iota - 43
ElfAbiAix
ElfAbiIrix
ElfAbiFreeBSD
ElfAbiTru64
ElfAbiModesto
ElfAbiOpenBSD
ElfClassNone = 0
ElfClass32 = 1
ElfClass64 = 2
)
const (
ElfDataNone = 0
ElfDataLsb = 1
ElfDataMsb = 2
)
const (
ElfTypeNone = 0
ElfTypeRelocatable = 1
ElfTypeExecutable = 2
ElfTypeSharedObject = 3
ElfTypeCore = 4
)
const (
ElfMachNone = 0
ElfMach32100 = 1
ElfMachSparc = 2
ElfMach386 = 3
ElfMach68000 = 4
ElfMach88000 = 5
ElfMach486 = 6
ElfMach860 = 7
ElfMachMips = 8
ElfMachS370 = 9
ElfMachMipsLe = 10
ElfMachParisc = 15
ElfMachVpp500 = 17
ElfMachSparc32Plus = 18
ElfMach960 = 19
ElfMachPower = 20
ElfMachPower64 = 21
ElfMachS390 = 22
ElfMachV800 = 36
ElfMachFr20 = 37
ElfMachRh32 = 38
ElfMachRce = 39
ElfMachArm = 40
ElfMachAlpha = 41
ElfMachSH = 42
ElfMachSparc9 = 43
ElfMachAmd64 = 62
)
const (
ElfAbiNone = 0
ElfAbiSystemV = 0
ElfAbiHPUX = 1
ElfAbiNetBSD = 2
ElfAbiLinux = 3
ElfAbiSolaris = 6
ElfAbiAix = 7
ElfAbiIrix = 8
ElfAbiFreeBSD = 9
ElfAbiTru64 = 10
ElfAbiModesto = 11
ElfAbiOpenBSD = 12
ElfAbiARM = 97
ElfAbiEmbedded = 255
ElfSectNone = 0 + iota - 52
ElfSectProgbits
ElfSectSymtab
ElfSectStrtab
ElfSectRela
ElfSectHash
ElfSectDynamic
ElfSectNote
ElfSectNobits
ElfSectRel
ElfSectShlib
ElfSectDynsym
)
const (
ElfSectNone = 0
ElfSectProgbits = 1
ElfSectSymtab = 2
ElfSectStrtab = 3
ElfSectRela = 4
ElfSectHash = 5
ElfSectDynamic = 6
ElfSectNote = 7
ElfSectNobits = 8
ElfSectRel = 9
ElfSectShlib = 10
ElfSectDynsym = 11
ElfSectFlagWrite = 0x1
ElfSectFlagAlloc = 0x2
ElfSectFlagExec = 0x4
ElfSymBindLocal = 0 + iota - 67
ElfSymBindGlobal
ElfSymBindWeak
ElfSymTypeNone = 0 + iota - 70
ElfSymTypeObject
ElfSymTypeFunc
ElfSymTypeSection
ElfSymTypeFile
)
const (
ElfSymBindLocal = 0
ElfSymBindGlobal = 1
ElfSymBindWeak = 2
)
const (
ElfSymTypeNone = 0
ElfSymTypeObject = 1
ElfSymTypeFunc = 2
ElfSymTypeSection = 3
ElfSymTypeFile = 4
)
const (
ElfSymShnNone = 0
ElfSymShnAbs = 0xFFF1
ElfSymShnCommon = 0xFFF2
ElfProgNone = 0 + iota - 78
ElfProgLoad
ElfProgDynamic
ElfProgInterp
ElfProgNote
ElfProgShlib
ElfProgPhdr
ElfProgFlagExec = 0x1
ElfProgFlagWrite = 0x2
ElfProgFlagRead = 0x4
)
const (
ElfProgNone = 0
ElfProgLoad = 1
ElfProgDynamic = 2
ElfProgInterp = 3
ElfProgNote = 4
ElfProgShlib = 5
ElfProgPhdr = 6
ElfProgFlagExec = 0x1
ElfProgFlagWrite = 0x2
ElfProgFlagRead = 0x4
)
const (
ElfNotePrStatus = 1
ElfNotePrFpreg = 2
ElfNotePrPsinfo = 3
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment