package elf
import "strconv"
const (
EI_CLASS = 4
EI_DATA = 5
EI_VERSION = 6
EI_OSABI = 7
EI_ABIVERSION = 8
EI_PAD = 9
EI_NIDENT = 16
)
const ELFMAG = "\177ELF"
type Version byte
const (
EV_NONE Version = 0
EV_CURRENT Version = 1
)
var versionStrings = []intName{
intName{0, "EV_NONE"},
intName{1, "EV_CURRENT"},
}
func (i Version) String() string { return stringName(uint32(i), versionStrings, false) }
func (i Version) GoString() string { return stringName(uint32(i), versionStrings, true) }
type Class byte
const (
ELFCLASSNONE Class = 0
ELFCLASS32 Class = 1
ELFCLASS64 Class = 2
)
var classStrings = []intName{
intName{0, "ELFCLASSNONE"},
intName{1, "ELFCLASS32"},
intName{2, "ELFCLASS64"},
}
func (i Class) String() string { return stringName(uint32(i), classStrings, false) }
func (i Class) GoString() string { return stringName(uint32(i), classStrings, true) }
type Data byte
const (
ELFDATANONE Data = 0
ELFDATA2LSB Data = 1
ELFDATA2MSB Data = 2
)
var dataStrings = []intName{
intName{0, "ELFDATANONE"},
intName{1, "ELFDATA2LSB"},
intName{2, "ELFDATA2MSB"},
}
func (i Data) String() string { return stringName(uint32(i), dataStrings, false) }
func (i Data) GoString() string { return stringName(uint32(i), dataStrings, true) }
type OSABI byte
const (
ELFOSABI_NONE OSABI = 0
ELFOSABI_HPUX OSABI = 1
ELFOSABI_NETBSD OSABI = 2
ELFOSABI_LINUX OSABI = 3
ELFOSABI_HURD OSABI = 4
ELFOSABI_86OPEN OSABI = 5
ELFOSABI_SOLARIS OSABI = 6
ELFOSABI_AIX OSABI = 7
ELFOSABI_IRIX OSABI = 8
ELFOSABI_FREEBSD OSABI = 9
ELFOSABI_TRU64 OSABI = 10
ELFOSABI_MODESTO OSABI = 11
ELFOSABI_OPENBSD OSABI = 12
ELFOSABI_OPENVMS OSABI = 13
ELFOSABI_NSK OSABI = 14
ELFOSABI_ARM OSABI = 97
ELFOSABI_STANDALONE OSABI = 255
)
var osabiStrings = []intName{
intName{0, "ELFOSABI_NONE"},
intName{1, "ELFOSABI_HPUX"},
intName{2, "ELFOSABI_NETBSD"},
intName{3, "ELFOSABI_LINUX"},
intName{4, "ELFOSABI_HURD"},
intName{5, "ELFOSABI_86OPEN"},
intName{6, "ELFOSABI_SOLARIS"},
intName{7, "ELFOSABI_AIX"},
intName{8, "ELFOSABI_IRIX"},
intName{9, "ELFOSABI_FREEBSD"},
intName{10, "ELFOSABI_TRU64"},
intName{11, "ELFOSABI_MODESTO"},
intName{12, "ELFOSABI_OPENBSD"},
intName{13, "ELFOSABI_OPENVMS"},
intName{14, "ELFOSABI_NSK"},
intName{97, "ELFOSABI_ARM"},
intName{255, "ELFOSABI_STANDALONE"},
}
func (i OSABI) String() string { return stringName(uint32(i), osabiStrings, false) }
func (i OSABI) GoString() string { return stringName(uint32(i), osabiStrings, true) }
type Type uint16
const (
ET_NONE Type = 0
ET_REL Type = 1
ET_EXEC Type = 2
ET_DYN Type = 3
ET_CORE Type = 4
ET_LOOS Type = 0xfe00
ET_HIOS Type = 0xfeff
ET_LOPROC Type = 0xff00
ET_HIPROC Type = 0xffff
)
var typeStrings = []intName{
intName{0, "ET_NONE"},
intName{1, "ET_REL"},
intName{2, "ET_EXEC"},
intName{3, "ET_DYN"},
intName{4, "ET_CORE"},
intName{0xfe00, "ET_LOOS"},
intName{0xfeff, "ET_HIOS"},
intName{0xff00, "ET_LOPROC"},
intName{0xffff, "ET_HIPROC"},
}
func (i Type) String() string { return stringName(uint32(i), typeStrings, false) }
func (i Type) GoString() string { return stringName(uint32(i), typeStrings, true) }
type Machine uint16
const (
EM_NONE Machine = 0
EM_M32 Machine = 1
EM_SPARC Machine = 2
EM_386 Machine = 3
EM_68K Machine = 4
EM_88K Machine = 5
EM_860 Machine = 7
EM_MIPS Machine = 8
EM_S370 Machine = 9
EM_MIPS_RS3_LE Machine = 10
EM_PARISC Machine = 15
EM_VPP500 Machine = 17
EM_SPARC32PLUS Machine = 18
EM_960 Machine = 19
EM_PPC Machine = 20
EM_PPC64 Machine = 21
EM_S390 Machine = 22
EM_V800 Machine = 36
EM_FR20 Machine = 37
EM_RH32 Machine = 38
EM_RCE Machine = 39
EM_ARM Machine = 40
EM_SH Machine = 42
EM_SPARCV9 Machine = 43
EM_TRICORE Machine = 44
EM_ARC Machine = 45
EM_H8_300 Machine = 46
EM_H8_300H Machine = 47
EM_H8S Machine = 48
EM_H8_500 Machine = 49
EM_IA_64 Machine = 50
EM_MIPS_X Machine = 51
EM_COLDFIRE Machine = 52
EM_68HC12 Machine = 53
EM_MMA Machine = 54
EM_PCP Machine = 55
EM_NCPU Machine = 56
EM_NDR1 Machine = 57
EM_STARCORE Machine = 58
EM_ME16 Machine = 59
EM_ST100 Machine = 60
EM_TINYJ Machine = 61
EM_X86_64 Machine = 62
EM_486 Machine = 6
EM_MIPS_RS4_BE Machine = 10
EM_ALPHA_STD Machine = 41
EM_ALPHA Machine = 0x9026
)
var machineStrings = []intName{
intName{0, "EM_NONE"},
intName{1, "EM_M32"},
intName{2, "EM_SPARC"},
intName{3, "EM_386"},
intName{4, "EM_68K"},
intName{5, "EM_88K"},
intName{7, "EM_860"},
intName{8, "EM_MIPS"},
intName{9, "EM_S370"},
intName{10, "EM_MIPS_RS3_LE"},
intName{15, "EM_PARISC"},
intName{17, "EM_VPP500"},
intName{18, "EM_SPARC32PLUS"},
intName{19, "EM_960"},
intName{20, "EM_PPC"},
intName{21, "EM_PPC64"},
intName{22, "EM_S390"},
intName{36, "EM_V800"},
intName{37, "EM_FR20"},
intName{38, "EM_RH32"},
intName{39, "EM_RCE"},
intName{40, "EM_ARM"},
intName{42, "EM_SH"},
intName{43, "EM_SPARCV9"},
intName{44, "EM_TRICORE"},
intName{45, "EM_ARC"},
intName{46, "EM_H8_300"},
intName{47, "EM_H8_300H"},
intName{48, "EM_H8S"},
intName{49, "EM_H8_500"},
intName{50, "EM_IA_64"},
intName{51, "EM_MIPS_X"},
intName{52, "EM_COLDFIRE"},
intName{53, "EM_68HC12"},
intName{54, "EM_MMA"},
intName{55, "EM_PCP"},
intName{56, "EM_NCPU"},
intName{57, "EM_NDR1"},
intName{58, "EM_STARCORE"},
intName{59, "EM_ME16"},
intName{60, "EM_ST100"},
intName{61, "EM_TINYJ"},
intName{62, "EM_X86_64"},
intName{6, "EM_486"},
intName{10, "EM_MIPS_RS4_BE"},
intName{41, "EM_ALPHA_STD"},
intName{0x9026, "EM_ALPHA"},
}
func (i Machine) String() string { return stringName(uint32(i), machineStrings, false) }
func (i Machine) GoString() string { return stringName(uint32(i), machineStrings, true) }
type SectionIndex int
const (
SHN_UNDEF SectionIndex = 0
SHN_LORESERVE SectionIndex = 0xff00
SHN_LOPROC SectionIndex = 0xff00
SHN_HIPROC SectionIndex = 0xff1f
SHN_LOOS SectionIndex = 0xff20
SHN_HIOS SectionIndex = 0xff3f
SHN_ABS SectionIndex = 0xfff1
SHN_COMMON SectionIndex = 0xfff2
SHN_XINDEX SectionIndex = 0xffff
SHN_HIRESERVE SectionIndex = 0xffff
)
var shnStrings = []intName{
intName{0, "SHN_UNDEF"},
intName{0xff00, "SHN_LOPROC"},
intName{0xff20, "SHN_LOOS"},
intName{0xfff1, "SHN_ABS"},
intName{0xfff2, "SHN_COMMON"},
intName{0xffff, "SHN_XINDEX"},
}
func (i SectionIndex) String() string { return stringName(uint32(i), shnStrings, false) }
func (i SectionIndex) GoString() string { return stringName(uint32(i), shnStrings, true) }
type SectionType uint32
const (
SHT_NULL SectionType = 0
SHT_PROGBITS SectionType = 1
SHT_SYMTAB SectionType = 2
SHT_STRTAB SectionType = 3
SHT_RELA SectionType = 4
SHT_HASH SectionType = 5
SHT_DYNAMIC SectionType = 6
SHT_NOTE SectionType = 7
SHT_NOBITS SectionType = 8
SHT_REL SectionType = 9
SHT_SHLIB SectionType = 10
SHT_DYNSYM SectionType = 11
SHT_INIT_ARRAY SectionType = 14
SHT_FINI_ARRAY SectionType = 15
SHT_PREINIT_ARRAY SectionType = 16
SHT_GROUP SectionType = 17
SHT_SYMTAB_SHNDX SectionType = 18
SHT_LOOS SectionType = 0x60000000
SHT_HIOS SectionType = 0x6fffffff
SHT_LOPROC SectionType = 0x70000000
SHT_HIPROC SectionType = 0x7fffffff
SHT_LOUSER SectionType = 0x80000000
SHT_HIUSER SectionType = 0xffffffff
)
var shtStrings = []intName{
intName{0, "SHT_NULL"},
intName{1, "SHT_PROGBITS"},
intName{2, "SHT_SYMTAB"},
intName{3, "SHT_STRTAB"},
intName{4, "SHT_RELA"},
intName{5, "SHT_HASH"},
intName{6, "SHT_DYNAMIC"},
intName{7, "SHT_NOTE"},
intName{8, "SHT_NOBITS"},
intName{9, "SHT_REL"},
intName{10, "SHT_SHLIB"},
intName{11, "SHT_DYNSYM"},
intName{14, "SHT_INIT_ARRAY"},
intName{15, "SHT_FINI_ARRAY"},
intName{16, "SHT_PREINIT_ARRAY"},
intName{17, "SHT_GROUP"},
intName{18, "SHT_SYMTAB_SHNDX"},
intName{0x60000000, "SHT_LOOS"},
intName{0x6fffffff, "SHT_HIOS"},
intName{0x70000000, "SHT_LOPROC"},
intName{0x7fffffff, "SHT_HIPROC"},
intName{0x80000000, "SHT_LOUSER"},
intName{0xffffffff, "SHT_HIUSER"},
}
func (i SectionType) String() string { return stringName(uint32(i), shtStrings, false) }
func (i SectionType) GoString() string { return stringName(uint32(i), shtStrings, true) }
type SectionFlag uint32
const (
SHF_WRITE SectionFlag = 0x1
SHF_ALLOC SectionFlag = 0x2
SHF_EXECINSTR SectionFlag = 0x4
SHF_MERGE SectionFlag = 0x10
SHF_STRINGS SectionFlag = 0x20
SHF_INFO_LINK SectionFlag = 0x40
SHF_LINK_ORDER SectionFlag = 0x80
SHF_OS_NONCONFORMING SectionFlag = 0x100
SHF_GROUP SectionFlag = 0x200
SHF_TLS SectionFlag = 0x400
SHF_MASKOS SectionFlag = 0x0ff00000
SHF_MASKPROC SectionFlag = 0xf0000000
)
var shfStrings = []intName{
intName{0x1, "SHF_WRITE"},
intName{0x2, "SHF_ALLOC"},
intName{0x4, "SHF_EXECINSTR"},
intName{0x10, "SHF_MERGE"},
intName{0x20, "SHF_STRINGS"},
intName{0x40, "SHF_INFO_LINK"},
intName{0x80, "SHF_LINK_ORDER"},
intName{0x100, "SHF_OS_NONCONFORMING"},
intName{0x200, "SHF_GROUP"},
intName{0x400, "SHF_TLS"},
}
func (i SectionFlag) String() string { return flagName(uint32(i), shfStrings, false) }
func (i SectionFlag) GoString() string { return flagName(uint32(i), shfStrings, true) }
type ProgType int
const (
PT_NULL ProgType = 0
PT_LOAD ProgType = 1
PT_DYNAMIC ProgType = 2
PT_INTERP ProgType = 3
PT_NOTE ProgType = 4
PT_SHLIB ProgType = 5
PT_PHDR ProgType = 6
PT_TLS ProgType = 7
PT_LOOS ProgType = 0x60000000
PT_HIOS ProgType = 0x6fffffff
PT_LOPROC ProgType = 0x70000000
PT_HIPROC ProgType = 0x7fffffff
)
var ptStrings = []intName{
intName{0, "PT_NULL"},
intName{1, "PT_LOAD"},
intName{2, "PT_DYNAMIC"},
intName{3, "PT_INTERP"},
intName{4, "PT_NOTE"},
intName{5, "PT_SHLIB"},
intName{6, "PT_PHDR"},
intName{7, "PT_TLS"},
intName{0x60000000, "PT_LOOS"},
intName{0x6fffffff, "PT_HIOS"},
intName{0x70000000, "PT_LOPROC"},
intName{0x7fffffff, "PT_HIPROC"},
}
func (i ProgType) String() string { return stringName(uint32(i), ptStrings, false) }
func (i ProgType) GoString() string { return stringName(uint32(i), ptStrings, true) }
type ProgFlag uint32
const (
PF_X ProgFlag = 0x1
PF_W ProgFlag = 0x2
PF_R ProgFlag = 0x4
PF_MASKOS ProgFlag = 0x0ff00000
PF_MASKPROC ProgFlag = 0xf0000000
)
var pfStrings = []intName{
intName{0x1, "PF_X"},
intName{0x2, "PF_W"},
intName{0x4, "PF_R"},
}
func (i ProgFlag) String() string { return flagName(uint32(i), pfStrings, false) }
func (i ProgFlag) GoString() string { return flagName(uint32(i), pfStrings, true) }
type DynTag int
const (
DT_NULL DynTag = 0
DT_NEEDED DynTag = 1
DT_PLTRELSZ DynTag = 2
DT_PLTGOT DynTag = 3
DT_HASH DynTag = 4
DT_STRTAB DynTag = 5
DT_SYMTAB DynTag = 6
DT_RELA DynTag = 7
DT_RELASZ DynTag = 8
DT_RELAENT DynTag = 9
DT_STRSZ DynTag = 10
DT_SYMENT DynTag = 11
DT_INIT DynTag = 12
DT_FINI DynTag = 13
DT_SONAME DynTag = 14
DT_RPATH DynTag = 15
DT_SYMBOLIC DynTag = 16
DT_REL DynTag = 17
DT_RELSZ DynTag = 18
DT_RELENT DynTag = 19
DT_PLTREL DynTag = 20
DT_DEBUG DynTag = 21
DT_TEXTREL DynTag = 22
DT_JMPREL DynTag = 23
DT_BIND_NOW DynTag = 24
DT_INIT_ARRAY DynTag = 25
DT_FINI_ARRAY DynTag = 26
DT_INIT_ARRAYSZ DynTag = 27
DT_FINI_ARRAYSZ DynTag = 28
DT_RUNPATH DynTag = 29
DT_FLAGS DynTag = 30
DT_ENCODING DynTag = 32
DT_PREINIT_ARRAY DynTag = 32
DT_PREINIT_ARRAYSZ DynTag = 33
DT_LOOS DynTag = 0x6000000d
DT_HIOS DynTag = 0x6ffff000
DT_LOPROC DynTag = 0x70000000
DT_HIPROC DynTag = 0x7fffffff
)
var dtStrings = []intName{
intName{0, "DT_NULL"},
intName{1, "DT_NEEDED"},
intName{2, "DT_PLTRELSZ"},
intName{3, "DT_PLTGOT"},
intName{4, "DT_HASH"},
intName{5, "DT_STRTAB"},
intName{6, "DT_SYMTAB"},
intName{7, "DT_RELA"},
intName{8, "DT_RELASZ"},
intName{9, "DT_RELAENT"},
intName{10, "DT_STRSZ"},
intName{11, "DT_SYMENT"},
intName{12, "DT_INIT"},
intName{13, "DT_FINI"},
intName{14, "DT_SONAME"},
intName{15, "DT_RPATH"},
intName{16, "DT_SYMBOLIC"},
intName{17, "DT_REL"},
intName{18, "DT_RELSZ"},
intName{19, "DT_RELENT"},
intName{20, "DT_PLTREL"},
intName{21, "DT_DEBUG"},
intName{22, "DT_TEXTREL"},
intName{23, "DT_JMPREL"},
intName{24, "DT_BIND_NOW"},
intName{25, "DT_INIT_ARRAY"},
intName{26, "DT_FINI_ARRAY"},
intName{27, "DT_INIT_ARRAYSZ"},
intName{28, "DT_FINI_ARRAYSZ"},
intName{29, "DT_RUNPATH"},
intName{30, "DT_FLAGS"},
intName{32, "DT_ENCODING"},
intName{32, "DT_PREINIT_ARRAY"},
intName{33, "DT_PREINIT_ARRAYSZ"},
intName{0x6000000d, "DT_LOOS"},
intName{0x6ffff000, "DT_HIOS"},
intName{0x70000000, "DT_LOPROC"},
intName{0x7fffffff, "DT_HIPROC"},
}
func (i DynTag) String() string { return stringName(uint32(i), dtStrings, false) }
func (i DynTag) GoString() string { return stringName(uint32(i), dtStrings, true) }
type DynFlag int
const (
DF_ORIGIN DynFlag = 0x0001
DF_SYMBOLIC DynFlag = 0x0002
DF_TEXTREL DynFlag = 0x0004
DF_BIND_NOW DynFlag = 0x0008
DF_STATIC_TLS DynFlag = 0x0010
)
var dflagStrings = []intName{
intName{0x0001, "DF_ORIGIN"},
intName{0x0002, "DF_SYMBOLIC"},
intName{0x0004, "DF_TEXTREL"},
intName{0x0008, "DF_BIND_NOW"},
intName{0x0010, "DF_STATIC_TLS"},
}
func (i DynFlag) String() string { return flagName(uint32(i), dflagStrings, false) }
func (i DynFlag) GoString() string { return flagName(uint32(i), dflagStrings, true) }
type NType int
const (
NT_PRSTATUS NType = 1
NT_FPREGSET NType = 2
NT_PRPSINFO NType = 3
)
var ntypeStrings = []intName{
intName{1, "NT_PRSTATUS"},
intName{2, "NT_FPREGSET"},
intName{3, "NT_PRPSINFO"},
}
func (i NType) String() string { return stringName(uint32(i), ntypeStrings, false) }
func (i NType) GoString() string { return stringName(uint32(i), ntypeStrings, true) }
type SymBind int
const (
STB_LOCAL SymBind = 0
STB_GLOBAL SymBind = 1
STB_WEAK SymBind = 2
STB_LOOS SymBind = 10
STB_HIOS SymBind = 12
STB_LOPROC SymBind = 13
STB_HIPROC SymBind = 15
)
var stbStrings = []intName{
intName{0, "STB_LOCAL"},
intName{1, "STB_GLOBAL"},
intName{2, "STB_WEAK"},
intName{10, "STB_LOOS"},
intName{12, "STB_HIOS"},
intName{13, "STB_LOPROC"},
intName{15, "STB_HIPROC"},
}
func (i SymBind) String() string { return stringName(uint32(i), stbStrings, false) }
func (i SymBind) GoString() string { return stringName(uint32(i), stbStrings, true) }
type SymType int
const (
STT_NOTYPE SymType = 0
STT_OBJECT SymType = 1
STT_FUNC SymType = 2
STT_SECTION SymType = 3
STT_FILE SymType = 4
STT_COMMON SymType = 5
STT_TLS SymType = 6
STT_LOOS SymType = 10
STT_HIOS SymType = 12
STT_LOPROC SymType = 13
STT_HIPROC SymType = 15
)
var sttStrings = []intName{
intName{0, "STT_NOTYPE"},
intName{1, "STT_OBJECT"},
intName{2, "STT_FUNC"},
intName{3, "STT_SECTION"},
intName{4, "STT_FILE"},
intName{5, "STT_COMMON"},
intName{6, "STT_TLS"},
intName{10, "STT_LOOS"},
intName{12, "STT_HIOS"},
intName{13, "STT_LOPROC"},
intName{15, "STT_HIPROC"},
}
func (i SymType) String() string { return stringName(uint32(i), sttStrings, false) }
func (i SymType) GoString() string { return stringName(uint32(i), sttStrings, true) }
type SymVis int
const (
STV_DEFAULT SymVis = 0x0
STV_INTERNAL SymVis = 0x1
STV_HIDDEN SymVis = 0x2
STV_PROTECTED SymVis = 0x3
)
var stvStrings = []intName{
intName{0x0, "STV_DEFAULT"},
intName{0x1, "STV_INTERNAL"},
intName{0x2, "STV_HIDDEN"},
intName{0x3, "STV_PROTECTED"},
}
func (i SymVis) String() string { return stringName(uint32(i), stvStrings, false) }
func (i SymVis) GoString() string { return stringName(uint32(i), stvStrings, true) }
type R_X86_64 int
const (
R_X86_64_NONE R_X86_64 = 0
R_X86_64_64 R_X86_64 = 1
R_X86_64_PC32 R_X86_64 = 2
R_X86_64_GOT32 R_X86_64 = 3
R_X86_64_PLT32 R_X86_64 = 4
R_X86_64_COPY R_X86_64 = 5
R_X86_64_GLOB_DAT R_X86_64 = 6
R_X86_64_JMP_SLOT R_X86_64 = 7
R_X86_64_RELATIVE R_X86_64 = 8
R_X86_64_GOTPCREL R_X86_64 = 9
R_X86_64_32 R_X86_64 = 10
R_X86_64_32S R_X86_64 = 11
R_X86_64_16 R_X86_64 = 12
R_X86_64_PC16 R_X86_64 = 13
R_X86_64_8 R_X86_64 = 14
R_X86_64_PC8 R_X86_64 = 15
R_X86_64_DTPMOD64 R_X86_64 = 16
R_X86_64_DTPOFF64 R_X86_64 = 17
R_X86_64_TPOFF64 R_X86_64 = 18
R_X86_64_TLSGD R_X86_64 = 19
R_X86_64_TLSLD R_X86_64 = 20
R_X86_64_DTPOFF32 R_X86_64 = 21
R_X86_64_GOTTPOFF R_X86_64 = 22
R_X86_64_TPOFF32 R_X86_64 = 23
)
var rx86_64Strings = []intName{
intName{0, "R_X86_64_NONE"},
intName{1, "R_X86_64_64"},
intName{2, "R_X86_64_PC32"},
intName{3, "R_X86_64_GOT32"},
intName{4, "R_X86_64_PLT32"},
intName{5, "R_X86_64_COPY"},
intName{6, "R_X86_64_GLOB_DAT"},
intName{7, "R_X86_64_JMP_SLOT"},
intName{8, "R_X86_64_RELATIVE"},
intName{9, "R_X86_64_GOTPCREL"},
intName{10, "R_X86_64_32"},
intName{11, "R_X86_64_32S"},
intName{12, "R_X86_64_16"},
intName{13, "R_X86_64_PC16"},
intName{14, "R_X86_64_8"},
intName{15, "R_X86_64_PC8"},
intName{16, "R_X86_64_DTPMOD64"},
intName{17, "R_X86_64_DTPOFF64"},
intName{18, "R_X86_64_TPOFF64"},
intName{19, "R_X86_64_TLSGD"},
intName{20, "R_X86_64_TLSLD"},
intName{21, "R_X86_64_DTPOFF32"},
intName{22, "R_X86_64_GOTTPOFF"},
intName{23, "R_X86_64_TPOFF32"},
}
func (i R_X86_64) String() string { return stringName(uint32(i), rx86_64Strings, false) }
func (i R_X86_64) GoString() string { return stringName(uint32(i), rx86_64Strings, true) }
type R_ALPHA int
const (
R_ALPHA_NONE R_ALPHA = 0
R_ALPHA_REFLONG R_ALPHA = 1
R_ALPHA_REFQUAD R_ALPHA = 2
R_ALPHA_GPREL32 R_ALPHA = 3
R_ALPHA_LITERAL R_ALPHA = 4
R_ALPHA_LITUSE R_ALPHA = 5
R_ALPHA_GPDISP R_ALPHA = 6
R_ALPHA_BRADDR R_ALPHA = 7
R_ALPHA_HINT R_ALPHA = 8
R_ALPHA_SREL16 R_ALPHA = 9
R_ALPHA_SREL32 R_ALPHA = 10
R_ALPHA_SREL64 R_ALPHA = 11
R_ALPHA_OP_PUSH R_ALPHA = 12
R_ALPHA_OP_STORE R_ALPHA = 13
R_ALPHA_OP_PSUB R_ALPHA = 14
R_ALPHA_OP_PRSHIFT R_ALPHA = 15
R_ALPHA_GPVALUE R_ALPHA = 16
R_ALPHA_GPRELHIGH R_ALPHA = 17
R_ALPHA_GPRELLOW R_ALPHA = 18
R_ALPHA_IMMED_GP_16 R_ALPHA = 19
R_ALPHA_IMMED_GP_HI32 R_ALPHA = 20
R_ALPHA_IMMED_SCN_HI32 R_ALPHA = 21
R_ALPHA_IMMED_BR_HI32 R_ALPHA = 22
R_ALPHA_IMMED_LO32 R_ALPHA = 23
R_ALPHA_COPY R_ALPHA = 24
R_ALPHA_GLOB_DAT R_ALPHA = 25
R_ALPHA_JMP_SLOT R_ALPHA = 26
R_ALPHA_RELATIVE R_ALPHA = 27
)
var ralphaStrings = []intName{
intName{0, "R_ALPHA_NONE"},
intName{1, "R_ALPHA_REFLONG"},
intName{2, "R_ALPHA_REFQUAD"},
intName{3, "R_ALPHA_GPREL32"},
intName{4, "R_ALPHA_LITERAL"},
intName{5, "R_ALPHA_LITUSE"},
intName{6, "R_ALPHA_GPDISP"},
intName{7, "R_ALPHA_BRADDR"},
intName{8, "R_ALPHA_HINT"},
intName{9, "R_ALPHA_SREL16"},
intName{10, "R_ALPHA_SREL32"},
intName{11, "R_ALPHA_SREL64"},
intName{12, "R_ALPHA_OP_PUSH"},
intName{13, "R_ALPHA_OP_STORE"},
intName{14, "R_ALPHA_OP_PSUB"},
intName{15, "R_ALPHA_OP_PRSHIFT"},
intName{16, "R_ALPHA_GPVALUE"},
intName{17, "R_ALPHA_GPRELHIGH"},
intName{18, "R_ALPHA_GPRELLOW"},
intName{19, "R_ALPHA_IMMED_GP_16"},
intName{20, "R_ALPHA_IMMED_GP_HI32"},
intName{21, "R_ALPHA_IMMED_SCN_HI32"},
intName{22, "R_ALPHA_IMMED_BR_HI32"},
intName{23, "R_ALPHA_IMMED_LO32"},
intName{24, "R_ALPHA_COPY"},
intName{25, "R_ALPHA_GLOB_DAT"},
intName{26, "R_ALPHA_JMP_SLOT"},
intName{27, "R_ALPHA_RELATIVE"},
}
func (i R_ALPHA) String() string { return stringName(uint32(i), ralphaStrings, false) }
func (i R_ALPHA) GoString() string { return stringName(uint32(i), ralphaStrings, true) }
type R_ARM int
const (
R_ARM_NONE R_ARM = 0
R_ARM_PC24 R_ARM = 1
R_ARM_ABS32 R_ARM = 2
R_ARM_REL32 R_ARM = 3
R_ARM_PC13 R_ARM = 4
R_ARM_ABS16 R_ARM = 5
R_ARM_ABS12 R_ARM = 6
R_ARM_THM_ABS5 R_ARM = 7
R_ARM_ABS8 R_ARM = 8
R_ARM_SBREL32 R_ARM = 9
R_ARM_THM_PC22 R_ARM = 10
R_ARM_THM_PC8 R_ARM = 11
R_ARM_AMP_VCALL9 R_ARM = 12
R_ARM_SWI24 R_ARM = 13
R_ARM_THM_SWI8 R_ARM = 14
R_ARM_XPC25 R_ARM = 15
R_ARM_THM_XPC22 R_ARM = 16
R_ARM_COPY R_ARM = 20
R_ARM_GLOB_DAT R_ARM = 21
R_ARM_JUMP_SLOT R_ARM = 22
R_ARM_RELATIVE R_ARM = 23
R_ARM_GOTOFF R_ARM = 24
R_ARM_GOTPC R_ARM = 25
R_ARM_GOT32 R_ARM = 26
R_ARM_PLT32 R_ARM = 27
R_ARM_GNU_VTENTRY R_ARM = 100
R_ARM_GNU_VTINHERIT R_ARM = 101
R_ARM_RSBREL32 R_ARM = 250
R_ARM_THM_RPC22 R_ARM = 251
R_ARM_RREL32 R_ARM = 252
R_ARM_RABS32 R_ARM = 253
R_ARM_RPC24 R_ARM = 254
R_ARM_RBASE R_ARM = 255
)
var rarmStrings = []intName{
intName{0, "R_ARM_NONE"},
intName{1, "R_ARM_PC24"},
intName{2, "R_ARM_ABS32"},
intName{3, "R_ARM_REL32"},
intName{4, "R_ARM_PC13"},
intName{5, "R_ARM_ABS16"},
intName{6, "R_ARM_ABS12"},
intName{7, "R_ARM_THM_ABS5"},
intName{8, "R_ARM_ABS8"},
intName{9, "R_ARM_SBREL32"},
intName{10, "R_ARM_THM_PC22"},
intName{11, "R_ARM_THM_PC8"},
intName{12, "R_ARM_AMP_VCALL9"},
intName{13, "R_ARM_SWI24"},
intName{14, "R_ARM_THM_SWI8"},
intName{15, "R_ARM_XPC25"},
intName{16, "R_ARM_THM_XPC22"},
intName{20, "R_ARM_COPY"},
intName{21, "R_ARM_GLOB_DAT"},
intName{22, "R_ARM_JUMP_SLOT"},
intName{23, "R_ARM_RELATIVE"},
intName{24, "R_ARM_GOTOFF"},
intName{25, "R_ARM_GOTPC"},
intName{26, "R_ARM_GOT32"},
intName{27, "R_ARM_PLT32"},
intName{100, "R_ARM_GNU_VTENTRY"},
intName{101, "R_ARM_GNU_VTINHERIT"},
intName{250, "R_ARM_RSBREL32"},
intName{251, "R_ARM_THM_RPC22"},
intName{252, "R_ARM_RREL32"},
intName{253, "R_ARM_RABS32"},
intName{254, "R_ARM_RPC24"},
intName{255, "R_ARM_RBASE"},
}
func (i R_ARM) String() string { return stringName(uint32(i), rarmStrings, false) }
func (i R_ARM) GoString() string { return stringName(uint32(i), rarmStrings, true) }
type R_386 int
const (
R_386_NONE R_386 = 0
R_386_32 R_386 = 1
R_386_PC32 R_386 = 2
R_386_GOT32 R_386 = 3
R_386_PLT32 R_386 = 4
R_386_COPY R_386 = 5
R_386_GLOB_DAT R_386 = 6
R_386_JMP_SLOT R_386 = 7
R_386_RELATIVE R_386 = 8
R_386_GOTOFF R_386 = 9
R_386_GOTPC R_386 = 10
R_386_TLS_TPOFF R_386 = 14
R_386_TLS_IE R_386 = 15
R_386_TLS_GOTIE R_386 = 16
R_386_TLS_LE R_386 = 17
R_386_TLS_GD R_386 = 18
R_386_TLS_LDM R_386 = 19
R_386_TLS_GD_32 R_386 = 24
R_386_TLS_GD_PUSH R_386 = 25
R_386_TLS_GD_CALL R_386 = 26
R_386_TLS_GD_POP R_386 = 27
R_386_TLS_LDM_32 R_386 = 28
R_386_TLS_LDM_PUSH R_386 = 29
R_386_TLS_LDM_CALL R_386 = 30
R_386_TLS_LDM_POP R_386 = 31
R_386_TLS_LDO_32 R_386 = 32
R_386_TLS_IE_32 R_386 = 33
R_386_TLS_LE_32 R_386 = 34
R_386_TLS_DTPMOD32 R_386 = 35
R_386_TLS_DTPOFF32 R_386 = 36
R_386_TLS_TPOFF32 R_386 = 37
)
var r386Strings = []intName{
intName{0, "R_386_NONE"},
intName{1, "R_386_32"},
intName{2, "R_386_PC32"},
intName{3, "R_386_GOT32"},
intName{4, "R_386_PLT32"},
intName{5, "R_386_COPY"},
intName{6, "R_386_GLOB_DAT"},
intName{7, "R_386_JMP_SLOT"},
intName{8, "R_386_RELATIVE"},
intName{9, "R_386_GOTOFF"},
intName{10, "R_386_GOTPC"},
intName{14, "R_386_TLS_TPOFF"},
intName{15, "R_386_TLS_IE"},
intName{16, "R_386_TLS_GOTIE"},
intName{17, "R_386_TLS_LE"},
intName{18, "R_386_TLS_GD"},
intName{19, "R_386_TLS_LDM"},
intName{24, "R_386_TLS_GD_32"},
intName{25, "R_386_TLS_GD_PUSH"},
intName{26, "R_386_TLS_GD_CALL"},
intName{27, "R_386_TLS_GD_POP"},
intName{28, "R_386_TLS_LDM_32"},
intName{29, "R_386_TLS_LDM_PUSH"},
intName{30, "R_386_TLS_LDM_CALL"},
intName{31, "R_386_TLS_LDM_POP"},
intName{32, "R_386_TLS_LDO_32"},
intName{33, "R_386_TLS_IE_32"},
intName{34, "R_386_TLS_LE_32"},
intName{35, "R_386_TLS_DTPMOD32"},
intName{36, "R_386_TLS_DTPOFF32"},
intName{37, "R_386_TLS_TPOFF32"},
}
func (i R_386) String() string { return stringName(uint32(i), r386Strings, false) }
func (i R_386) GoString() string { return stringName(uint32(i), r386Strings, true) }
type R_PPC int
const (
R_PPC_NONE R_PPC = 0
R_PPC_ADDR32 R_PPC = 1
R_PPC_ADDR24 R_PPC = 2
R_PPC_ADDR16 R_PPC = 3
R_PPC_ADDR16_LO R_PPC = 4
R_PPC_ADDR16_HI R_PPC = 5
R_PPC_ADDR16_HA R_PPC = 6
R_PPC_ADDR14 R_PPC = 7
R_PPC_ADDR14_BRTAKEN R_PPC = 8
R_PPC_ADDR14_BRNTAKEN R_PPC = 9
R_PPC_REL24 R_PPC = 10
R_PPC_REL14 R_PPC = 11
R_PPC_REL14_BRTAKEN R_PPC = 12
R_PPC_REL14_BRNTAKEN R_PPC = 13
R_PPC_GOT16 R_PPC = 14
R_PPC_GOT16_LO R_PPC = 15
R_PPC_GOT16_HI R_PPC = 16
R_PPC_GOT16_HA R_PPC = 17
R_PPC_PLTREL24 R_PPC = 18
R_PPC_COPY R_PPC = 19
R_PPC_GLOB_DAT R_PPC = 20
R_PPC_JMP_SLOT R_PPC = 21
R_PPC_RELATIVE R_PPC = 22
R_PPC_LOCAL24PC R_PPC = 23
R_PPC_UADDR32 R_PPC = 24
R_PPC_UADDR16 R_PPC = 25
R_PPC_REL32 R_PPC = 26
R_PPC_PLT32 R_PPC = 27
R_PPC_PLTREL32 R_PPC = 28
R_PPC_PLT16_LO R_PPC = 29
R_PPC_PLT16_HI R_PPC = 30
R_PPC_PLT16_HA R_PPC = 31
R_PPC_SDAREL16 R_PPC = 32
R_PPC_SECTOFF R_PPC = 33
R_PPC_SECTOFF_LO R_PPC = 34
R_PPC_SECTOFF_HI R_PPC = 35
R_PPC_SECTOFF_HA R_PPC = 36
R_PPC_TLS R_PPC = 67
R_PPC_DTPMOD32 R_PPC = 68
R_PPC_TPREL16 R_PPC = 69
R_PPC_TPREL16_LO R_PPC = 70
R_PPC_TPREL16_HI R_PPC = 71
R_PPC_TPREL16_HA R_PPC = 72
R_PPC_TPREL32 R_PPC = 73
R_PPC_DTPREL16 R_PPC = 74
R_PPC_DTPREL16_LO R_PPC = 75
R_PPC_DTPREL16_HI R_PPC = 76
R_PPC_DTPREL16_HA R_PPC = 77
R_PPC_DTPREL32 R_PPC = 78
R_PPC_GOT_TLSGD16 R_PPC = 79
R_PPC_GOT_TLSGD16_LO R_PPC = 80
R_PPC_GOT_TLSGD16_HI R_PPC = 81
R_PPC_GOT_TLSGD16_HA R_PPC = 82
R_PPC_GOT_TLSLD16 R_PPC = 83
R_PPC_GOT_TLSLD16_LO R_PPC = 84
R_PPC_GOT_TLSLD16_HI R_PPC = 85
R_PPC_GOT_TLSLD16_HA R_PPC = 86
R_PPC_GOT_TPREL16 R_PPC = 87
R_PPC_GOT_TPREL16_LO R_PPC = 88
R_PPC_GOT_TPREL16_HI R_PPC = 89
R_PPC_GOT_TPREL16_HA R_PPC = 90
R_PPC_EMB_NADDR32 R_PPC = 101
R_PPC_EMB_NADDR16 R_PPC = 102
R_PPC_EMB_NADDR16_LO R_PPC = 103
R_PPC_EMB_NADDR16_HI R_PPC = 104
R_PPC_EMB_NADDR16_HA R_PPC = 105
R_PPC_EMB_SDAI16 R_PPC = 106
R_PPC_EMB_SDA2I16 R_PPC = 107
R_PPC_EMB_SDA2REL R_PPC = 108
R_PPC_EMB_SDA21 R_PPC = 109
R_PPC_EMB_MRKREF R_PPC = 110
R_PPC_EMB_RELSEC16 R_PPC = 111
R_PPC_EMB_RELST_LO R_PPC = 112
R_PPC_EMB_RELST_HI R_PPC = 113
R_PPC_EMB_RELST_HA R_PPC = 114
R_PPC_EMB_BIT_FLD R_PPC = 115
R_PPC_EMB_RELSDA R_PPC = 116
)
var rppcStrings = []intName{
intName{0, "R_PPC_NONE"},
intName{1, "R_PPC_ADDR32"},
intName{2, "R_PPC_ADDR24"},
intName{3, "R_PPC_ADDR16"},
intName{4, "R_PPC_ADDR16_LO"},
intName{5, "R_PPC_ADDR16_HI"},
intName{6, "R_PPC_ADDR16_HA"},
intName{7, "R_PPC_ADDR14"},
intName{8, "R_PPC_ADDR14_BRTAKEN"},
intName{9, "R_PPC_ADDR14_BRNTAKEN"},
intName{10, "R_PPC_REL24"},
intName{11, "R_PPC_REL14"},
intName{12, "R_PPC_REL14_BRTAKEN"},
intName{13, "R_PPC_REL14_BRNTAKEN"},
intName{14, "R_PPC_GOT16"},
intName{15, "R_PPC_GOT16_LO"},
intName{16, "R_PPC_GOT16_HI"},
intName{17, "R_PPC_GOT16_HA"},
intName{18, "R_PPC_PLTREL24"},
intName{19, "R_PPC_COPY"},
intName{20, "R_PPC_GLOB_DAT"},
intName{21, "R_PPC_JMP_SLOT"},
intName{22, "R_PPC_RELATIVE"},
intName{23, "R_PPC_LOCAL24PC"},
intName{24, "R_PPC_UADDR32"},
intName{25, "R_PPC_UADDR16"},
intName{26, "R_PPC_REL32"},
intName{27, "R_PPC_PLT32"},
intName{28, "R_PPC_PLTREL32"},
intName{29, "R_PPC_PLT16_LO"},
intName{30, "R_PPC_PLT16_HI"},
intName{31, "R_PPC_PLT16_HA"},
intName{32, "R_PPC_SDAREL16"},
intName{33, "R_PPC_SECTOFF"},
intName{34, "R_PPC_SECTOFF_LO"},
intName{35, "R_PPC_SECTOFF_HI"},
intName{36, "R_PPC_SECTOFF_HA"},
intName{67, "R_PPC_TLS"},
intName{68, "R_PPC_DTPMOD32"},
intName{69, "R_PPC_TPREL16"},
intName{70, "R_PPC_TPREL16_LO"},
intName{71, "R_PPC_TPREL16_HI"},
intName{72, "R_PPC_TPREL16_HA"},
intName{73, "R_PPC_TPREL32"},
intName{74, "R_PPC_DTPREL16"},
intName{75, "R_PPC_DTPREL16_LO"},
intName{76, "R_PPC_DTPREL16_HI"},
intName{77, "R_PPC_DTPREL16_HA"},
intName{78, "R_PPC_DTPREL32"},
intName{79, "R_PPC_GOT_TLSGD16"},
intName{80, "R_PPC_GOT_TLSGD16_LO"},
intName{81, "R_PPC_GOT_TLSGD16_HI"},
intName{82, "R_PPC_GOT_TLSGD16_HA"},
intName{83, "R_PPC_GOT_TLSLD16"},
intName{84, "R_PPC_GOT_TLSLD16_LO"},
intName{85, "R_PPC_GOT_TLSLD16_HI"},
intName{86, "R_PPC_GOT_TLSLD16_HA"},
intName{87, "R_PPC_GOT_TPREL16"},
intName{88, "R_PPC_GOT_TPREL16_LO"},
intName{89, "R_PPC_GOT_TPREL16_HI"},
intName{90, "R_PPC_GOT_TPREL16_HA"},
intName{101, "R_PPC_EMB_NADDR32"},
intName{102, "R_PPC_EMB_NADDR16"},
intName{103, "R_PPC_EMB_NADDR16_LO"},
intName{104, "R_PPC_EMB_NADDR16_HI"},
intName{105, "R_PPC_EMB_NADDR16_HA"},
intName{106, "R_PPC_EMB_SDAI16"},
intName{107, "R_PPC_EMB_SDA2I16"},
intName{108, "R_PPC_EMB_SDA2REL"},
intName{109, "R_PPC_EMB_SDA21"},
intName{110, "R_PPC_EMB_MRKREF"},
intName{111, "R_PPC_EMB_RELSEC16"},
intName{112, "R_PPC_EMB_RELST_LO"},
intName{113, "R_PPC_EMB_RELST_HI"},
intName{114, "R_PPC_EMB_RELST_HA"},
intName{115, "R_PPC_EMB_BIT_FLD"},
intName{116, "R_PPC_EMB_RELSDA"},
}
func (i R_PPC) String() string { return stringName(uint32(i), rppcStrings, false) }
func (i R_PPC) GoString() string { return stringName(uint32(i), rppcStrings, true) }
type R_SPARC int
const (
R_SPARC_NONE R_SPARC = 0
R_SPARC_8 R_SPARC = 1
R_SPARC_16 R_SPARC = 2
R_SPARC_32 R_SPARC = 3
R_SPARC_DISP8 R_SPARC = 4
R_SPARC_DISP16 R_SPARC = 5
R_SPARC_DISP32 R_SPARC = 6
R_SPARC_WDISP30 R_SPARC = 7
R_SPARC_WDISP22 R_SPARC = 8
R_SPARC_HI22 R_SPARC = 9
R_SPARC_22 R_SPARC = 10
R_SPARC_13 R_SPARC = 11
R_SPARC_LO10 R_SPARC = 12
R_SPARC_GOT10 R_SPARC = 13
R_SPARC_GOT13 R_SPARC = 14
R_SPARC_GOT22 R_SPARC = 15
R_SPARC_PC10 R_SPARC = 16
R_SPARC_PC22 R_SPARC = 17
R_SPARC_WPLT30 R_SPARC = 18
R_SPARC_COPY R_SPARC = 19
R_SPARC_GLOB_DAT R_SPARC = 20
R_SPARC_JMP_SLOT R_SPARC = 21
R_SPARC_RELATIVE R_SPARC = 22
R_SPARC_UA32 R_SPARC = 23
R_SPARC_PLT32 R_SPARC = 24
R_SPARC_HIPLT22 R_SPARC = 25
R_SPARC_LOPLT10 R_SPARC = 26
R_SPARC_PCPLT32 R_SPARC = 27
R_SPARC_PCPLT22 R_SPARC = 28
R_SPARC_PCPLT10 R_SPARC = 29
R_SPARC_10 R_SPARC = 30
R_SPARC_11 R_SPARC = 31
R_SPARC_64 R_SPARC = 32
R_SPARC_OLO10 R_SPARC = 33
R_SPARC_HH22 R_SPARC = 34
R_SPARC_HM10 R_SPARC = 35
R_SPARC_LM22 R_SPARC = 36
R_SPARC_PC_HH22 R_SPARC = 37
R_SPARC_PC_HM10 R_SPARC = 38
R_SPARC_PC_LM22 R_SPARC = 39
R_SPARC_WDISP16 R_SPARC = 40
R_SPARC_WDISP19 R_SPARC = 41
R_SPARC_GLOB_JMP R_SPARC = 42
R_SPARC_7 R_SPARC = 43
R_SPARC_5 R_SPARC = 44
R_SPARC_6 R_SPARC = 45
R_SPARC_DISP64 R_SPARC = 46
R_SPARC_PLT64 R_SPARC = 47
R_SPARC_HIX22 R_SPARC = 48
R_SPARC_LOX10 R_SPARC = 49
R_SPARC_H44 R_SPARC = 50
R_SPARC_M44 R_SPARC = 51
R_SPARC_L44 R_SPARC = 52
R_SPARC_REGISTER R_SPARC = 53
R_SPARC_UA64 R_SPARC = 54
R_SPARC_UA16 R_SPARC = 55
)
var rsparcStrings = []intName{
intName{0, "R_SPARC_NONE"},
intName{1, "R_SPARC_8"},
intName{2, "R_SPARC_16"},
intName{3, "R_SPARC_32"},
intName{4, "R_SPARC_DISP8"},
intName{5, "R_SPARC_DISP16"},
intName{6, "R_SPARC_DISP32"},
intName{7, "R_SPARC_WDISP30"},
intName{8, "R_SPARC_WDISP22"},
intName{9, "R_SPARC_HI22"},
intName{10, "R_SPARC_22"},
intName{11, "R_SPARC_13"},
intName{12, "R_SPARC_LO10"},
intName{13, "R_SPARC_GOT10"},
intName{14, "R_SPARC_GOT13"},
intName{15, "R_SPARC_GOT22"},
intName{16, "R_SPARC_PC10"},
intName{17, "R_SPARC_PC22"},
intName{18, "R_SPARC_WPLT30"},
intName{19, "R_SPARC_COPY"},
intName{20, "R_SPARC_GLOB_DAT"},
intName{21, "R_SPARC_JMP_SLOT"},
intName{22, "R_SPARC_RELATIVE"},
intName{23, "R_SPARC_UA32"},
intName{24, "R_SPARC_PLT32"},
intName{25, "R_SPARC_HIPLT22"},
intName{26, "R_SPARC_LOPLT10"},
intName{27, "R_SPARC_PCPLT32"},
intName{28, "R_SPARC_PCPLT22"},
intName{29, "R_SPARC_PCPLT10"},
intName{30, "R_SPARC_10"},
intName{31, "R_SPARC_11"},
intName{32, "R_SPARC_64"},
intName{33, "R_SPARC_OLO10"},
intName{34, "R_SPARC_HH22"},
intName{35, "R_SPARC_HM10"},
intName{36, "R_SPARC_LM22"},
intName{37, "R_SPARC_PC_HH22"},
intName{38, "R_SPARC_PC_HM10"},
intName{39, "R_SPARC_PC_LM22"},
intName{40, "R_SPARC_WDISP16"},
intName{41, "R_SPARC_WDISP19"},
intName{42, "R_SPARC_GLOB_JMP"},
intName{43, "R_SPARC_7"},
intName{44, "R_SPARC_5"},
intName{45, "R_SPARC_6"},
intName{46, "R_SPARC_DISP64"},
intName{47, "R_SPARC_PLT64"},
intName{48, "R_SPARC_HIX22"},
intName{49, "R_SPARC_LOX10"},
intName{50, "R_SPARC_H44"},
intName{51, "R_SPARC_M44"},
intName{52, "R_SPARC_L44"},
intName{53, "R_SPARC_REGISTER"},
intName{54, "R_SPARC_UA64"},
intName{55, "R_SPARC_UA16"},
}
func (i R_SPARC) String() string { return stringName(uint32(i), rsparcStrings, false) }
func (i R_SPARC) GoString() string { return stringName(uint32(i), rsparcStrings, true) }
const ARM_MAGIC_TRAMP_NUMBER = 0x5c000003
type Header32 struct {
Ident [EI_NIDENT]byte
Type uint16
Machine uint16
Version uint32
Entry uint32
Phoff uint32
Shoff uint32
Flags uint32
Ehsize uint16
Phentsize uint16
Phnum uint16
Shentsize uint16
Shnum uint16
Shstrndx uint16
}
type Section32 struct {
Name uint32
Type uint32
Flags uint32
Addr uint32
Off uint32
Size uint32
Link uint32
Info uint32
Addralign uint32
Entsize uint32
}
type Prog32 struct {
Type uint32
Off uint32
Vaddr uint32
Paddr uint32
Filesz uint32
Memsz uint32
Flags uint32
Align uint32
}
type Dyn32 struct {
Tag int32
Val uint32
}
type Rel32 struct {
Off uint32
Info uint32
}
type Rela32 struct {
Off uint32
Info uint32
Addend int32
}
func R_SYM32(info uint32) uint32 { return uint32(info >> 8) }
func R_TYPE32(info uint32) uint32 { return uint32(info & 0xff) }
func R_INFO32(sym, typ uint32) uint32 { return sym<<8 | typ }
type Sym32 struct {
Name uint32
Value uint32
Size uint32
Info uint8
Other uint8
Shndx uint16
}
const Sym32Size = 16
func ST_BIND(info uint8) SymBind { return SymBind(info >> 4) }
func ST_TYPE(bind SymBind, typ SymType) uint8 { return uint8(bind)<<4 | uint8(typ)&0xf }
func ST_VISIBILITY(other uint8) SymVis { return SymVis(other & 3) }
type Header64 struct {
Ident [EI_NIDENT]byte
Type uint16
Machine uint16
Version uint32
Entry uint64
Phoff uint64
Shoff uint64
Flags uint32
Ehsize uint16
Phentsize uint16
Phnum uint16
Shentsize uint16
Shnum uint16
Shstrndx uint16
}
type Section64 struct {
Name uint32
Type uint32
Flags uint64
Addr uint64
Off uint64
Size uint64
Link uint32
Info uint32
Addralign uint64
Entsize uint64
}
type Prog64 struct {
Type uint32
Flags uint32
Off uint64
Vaddr uint64
Paddr uint64
Filesz uint64
Memsz uint64
Align uint64
}
type Dyn64 struct {
Tag int64
Val uint64
}
type Rel64 struct {
Off uint64
Info uint64
}
type Rela64 struct {
Off uint64
Info uint64
Addend int64
}
func R_SYM64(info uint64) uint32 { return uint32(info >> 32) }
func R_TYPE64(info uint64) uint32 { return uint32(info) }
func R_INFO(sym, typ uint32) uint64 { return uint64(sym)<<32 | uint64(typ) }
type Sym64 struct {
Name uint32
Info uint8
Other uint8
Shndx uint16
Value uint64
Size uint64
}
const Sym64Size = 24
type intName struct {
i uint32
s string
}
func stringName(i uint32, names []intName, goSyntax bool) string {
for _, n := range names {
if n.i == i {
if goSyntax {
return "elf." + n.s
}
return n.s
}
}
for j := len(names) - 1; j >= 0; j-- {
n := names[j]
if n.i < i {
s := n.s
if goSyntax {
s = "elf." + s
}
return s + "+" + strconv.Uitoa64(uint64(i-n.i))
}
}
return strconv.Uitoa64(uint64(i))
}
func flagName(i uint32, names []intName, goSyntax bool) string {
s := ""
for _, n := range names {
if n.i&i == n.i {
if len(s) > 0 {
s += "+"
}
if goSyntax {
s += "elf."
}
s += n.s
i -= n.i
}
}
if len(s) == 0 {
return "0x" + strconv.Uitob64(uint64(i), 16)
}
if i != 0 {
s += "+0x" + strconv.Uitob64(uint64(i), 16)
}
return s
}