Imports #
"strconv"
"bytes"
"compress/zlib"
"debug/dwarf"
"encoding/binary"
"errors"
"fmt"
"internal/saferio"
"internal/zstd"
"io"
"os"
"strings"
"unsafe"
"io"
"os"
"strconv"
"bytes"
"compress/zlib"
"debug/dwarf"
"encoding/binary"
"errors"
"fmt"
"internal/saferio"
"internal/zstd"
"io"
"os"
"strings"
"unsafe"
"io"
"os"
Magic number for the elf trampoline, chosen wisely to be an immediate value.
const ARM_MAGIC_TRAMP_NUMBER = 0x5c000003
const COMPRESS_HIOS CompressionType = 0x6fffffff
const COMPRESS_HIPROC CompressionType = 0x7fffffff
const COMPRESS_LOOS CompressionType = 0x60000000
const COMPRESS_LOPROC CompressionType = 0x70000000
const COMPRESS_ZLIB CompressionType = 1
const COMPRESS_ZSTD CompressionType = 2
Identifies this object as a configuration alternative object generated by crle. Triggers the runtime linker to search for a configuration file $ORIGIN/ld.config.app-name.
const DF_1_CONFALT DynFlag1 = 0x00002000
Indicates that the object should use direct binding information.
const DF_1_DIRECT DynFlag1 = 0x00000100
Indicates that this object has displacement relocations applied.
const DF_1_DISPRELDNE DynFlag1 = 0x00008000
Indicates that this object has displacement relocations pending.
const DF_1_DISPRELPND DynFlag1 = 0x00010000
Indicates that this object has been edited or has been modified since the objects original construction by the link-editor.
const DF_1_EDITED DynFlag1 = 0x00200000
Meaningful only for filtees. Terminates a filters search for any further filtees.
const DF_1_ENDFILTEE DynFlag1 = 0x00004000
Unused.
const DF_1_GLOBAL DynFlag1 = 0x00000002
Indicates that the executable requires global auditing.
const DF_1_GLOBAUDIT DynFlag1 = 0x01000000
Indicates that the object is a member of a group.
const DF_1_GROUP DynFlag1 = 0x00000004
Reserved for internal use by the kernel runtime-linker.
const DF_1_IGNMULDEF DynFlag1 = 0x00040000
Indicates that this object's initialization section be run before any other objects loaded.
const DF_1_INITFIRST DynFlag1 = 0x00000020
Indicates that the objects symbol table is to interpose before all symbols except the primary load object, which is typically the executable.
const DF_1_INTERPOSE DynFlag1 = 0x00000400
Indicates that the object is a kernel module.
const DF_1_KMOD DynFlag1 = 0x10000000
Meaningful only for filters. Indicates that all associated filtees be processed immediately.
const DF_1_LOADFLTR DynFlag1 = 0x00000010
Unused.
const DF_1_NOCOMMON DynFlag1 = 0x40000000
Indicates that the search for dependencies of this object ignores any default library search paths.
const DF_1_NODEFLIB DynFlag1 = 0x00000800
Indicates that the object cannot be deleted from a process.
const DF_1_NODELETE DynFlag1 = 0x00000008
Indicates that this object contains symbols that cannot be directly bound to.
const DF_1_NODIRECT DynFlag1 = 0x00020000
Indicates that this object is not dumped by dldump. Candidates are objects with no relocations that might get included when generating alternative objects using.
const DF_1_NODUMP DynFlag1 = 0x00001000
Reserved for internal use by the kernel runtime-linker.
const DF_1_NOHDR DynFlag1 = 0x00100000
Reserved for internal use by the kernel runtime-linker.
const DF_1_NOKSYMS DynFlag1 = 0x00080000
Indicates that the object cannot be added to a running process with dlopen.
const DF_1_NOOPEN DynFlag1 = 0x00000040
Reserved for internal use by the kernel runtime-linker.
const DF_1_NORELOC DynFlag1 = 0x00400000
Indicates that all relocations for this object must be processed before returning control to the program.
const DF_1_NOW DynFlag1 = 0x00000001
Indicates the object requires $ORIGIN processing.
const DF_1_ORIGIN DynFlag1 = 0x00000080
Indicates that the object is a position-independent executable.
const DF_1_PIE DynFlag1 = 0x08000000
Indicates that the object defines, or makes reference to singleton symbols.
const DF_1_SINGLETON DynFlag1 = 0x02000000
Indicates that the object is a stub.
const DF_1_STUB DynFlag1 = 0x04000000
Indicates that the object contains individual symbols that should interpose before all symbols except the primary load object, which is typically the executable.
const DF_1_SYMINTPOSE DynFlag1 = 0x00800000
Unused.
const DF_1_TRANS DynFlag1 = 0x00000200
Indicates that the object is a weak standard filter.
const DF_1_WEAKFILTER DynFlag1 = 0x20000000
const DF_BIND_NOW DynFlag = 0x0008
const DF_ORIGIN DynFlag = 0x0001
const DF_STATIC_TLS DynFlag = 0x0010
const DF_SYMBOLIC DynFlag = 0x0002
const DF_TEXTREL DynFlag = 0x0004
const DT_ADDRRNGHI DynTag = 0x6ffffeff
const DT_ADDRRNGLO DynTag = 0x6ffffe00
const DT_AUDIT DynTag = 0x6ffffefc
const DT_AUXILIARY DynTag = 0x7ffffffd
const DT_BIND_NOW DynTag = 24
const DT_CHECKSUM DynTag = 0x6ffffdf8
const DT_CONFIG DynTag = 0x6ffffefa
const DT_DEBUG DynTag = 21
const DT_DEPAUDIT DynTag = 0x6ffffefb
const DT_ENCODING DynTag = 32
const DT_FEATURE DynTag = 0x6ffffdfc
const DT_FILTER DynTag = 0x7fffffff
const DT_FINI DynTag = 13
const DT_FINI_ARRAY DynTag = 26
const DT_FINI_ARRAYSZ DynTag = 28
const DT_FLAGS DynTag = 30
const DT_FLAGS_1 DynTag = 0x6ffffffb
const DT_GNU_CONFLICT DynTag = 0x6ffffef8
const DT_GNU_CONFLICTSZ DynTag = 0x6ffffdf6
const DT_GNU_HASH DynTag = 0x6ffffef5
const DT_GNU_LIBLIST DynTag = 0x6ffffef9
const DT_GNU_LIBLISTSZ DynTag = 0x6ffffdf7
const DT_GNU_PRELINKED DynTag = 0x6ffffdf5
const DT_HASH DynTag = 4
const DT_HIOS DynTag = 0x6ffff000
const DT_HIPROC DynTag = 0x7fffffff
const DT_INIT DynTag = 12
const DT_INIT_ARRAY DynTag = 25
const DT_INIT_ARRAYSZ DynTag = 27
const DT_JMPREL DynTag = 23
const DT_LOOS DynTag = 0x6000000d
const DT_LOPROC DynTag = 0x70000000
const DT_MIPS_AUX_DYNAMIC DynTag = 0x70000031
const DT_MIPS_BASE_ADDRESS DynTag = 0x70000006
const DT_MIPS_COMPACT_SIZE DynTag = 0x7000002f
const DT_MIPS_CONFLICT DynTag = 0x70000008
const DT_MIPS_CONFLICTNO DynTag = 0x7000000b
const DT_MIPS_CXX_FLAGS DynTag = 0x70000022
const DT_MIPS_DELTA_CLASS DynTag = 0x70000017
const DT_MIPS_DELTA_CLASSSYM DynTag = 0x70000020
const DT_MIPS_DELTA_CLASSSYM_NO DynTag = 0x70000021
const DT_MIPS_DELTA_CLASS_NO DynTag = 0x70000018
const DT_MIPS_DELTA_INSTANCE DynTag = 0x70000019
const DT_MIPS_DELTA_INSTANCE_NO DynTag = 0x7000001a
const DT_MIPS_DELTA_RELOC DynTag = 0x7000001b
const DT_MIPS_DELTA_RELOC_NO DynTag = 0x7000001c
const DT_MIPS_DELTA_SYM DynTag = 0x7000001d
const DT_MIPS_DELTA_SYM_NO DynTag = 0x7000001e
const DT_MIPS_DYNSTR_ALIGN DynTag = 0x7000002b
const DT_MIPS_FLAGS DynTag = 0x70000005
const DT_MIPS_GOTSYM DynTag = 0x70000013
const DT_MIPS_GP_VALUE DynTag = 0x70000030
const DT_MIPS_HIDDEN_GOTIDX DynTag = 0x70000027
const DT_MIPS_HIPAGENO DynTag = 0x70000014
const DT_MIPS_ICHECKSUM DynTag = 0x70000003
const DT_MIPS_INTERFACE DynTag = 0x7000002a
const DT_MIPS_INTERFACE_SIZE DynTag = 0x7000002c
const DT_MIPS_IVERSION DynTag = 0x70000004
const DT_MIPS_LIBLIST DynTag = 0x70000009
const DT_MIPS_LIBLISTNO DynTag = 0x70000010
const DT_MIPS_LOCALPAGE_GOTIDX DynTag = 0x70000025
const DT_MIPS_LOCAL_GOTIDX DynTag = 0x70000026
const DT_MIPS_LOCAL_GOTNO DynTag = 0x7000000a
const DT_MIPS_MSYM DynTag = 0x70000007
const DT_MIPS_OPTIONS DynTag = 0x70000029
const DT_MIPS_PERF_SUFFIX DynTag = 0x7000002e
const DT_MIPS_PIXIE_INIT DynTag = 0x70000023
const DT_MIPS_PLTGOT DynTag = 0x70000032
const DT_MIPS_PROTECTED_GOTIDX DynTag = 0x70000028
const DT_MIPS_RLD_MAP DynTag = 0x70000016
const DT_MIPS_RLD_MAP_REL DynTag = 0x70000035
const DT_MIPS_RLD_TEXT_RESOLVE_ADDR DynTag = 0x7000002d
const DT_MIPS_RLD_VERSION DynTag = 0x70000001
const DT_MIPS_RWPLT DynTag = 0x70000034
const DT_MIPS_SYMBOL_LIB DynTag = 0x70000024
const DT_MIPS_SYMTABNO DynTag = 0x70000011
const DT_MIPS_TIME_STAMP DynTag = 0x70000002
const DT_MIPS_UNREFEXTNO DynTag = 0x70000012
const DT_MOVEENT DynTag = 0x6ffffdfa
const DT_MOVESZ DynTag = 0x6ffffdfb
const DT_MOVETAB DynTag = 0x6ffffefe
const DT_NEEDED DynTag = 1
const DT_NULL DynTag = 0
const DT_PLTGOT DynTag = 3
const DT_PLTPAD DynTag = 0x6ffffefd
const DT_PLTPADSZ DynTag = 0x6ffffdf9
const DT_PLTREL DynTag = 20
const DT_PLTRELSZ DynTag = 2
const DT_POSFLAG_1 DynTag = 0x6ffffdfd
const DT_PPC64_GLINK DynTag = 0x70000000
const DT_PPC64_OPD DynTag = 0x70000001
const DT_PPC64_OPDSZ DynTag = 0x70000002
const DT_PPC64_OPT DynTag = 0x70000003
const DT_PPC_GOT DynTag = 0x70000000
const DT_PPC_OPT DynTag = 0x70000001
const DT_PREINIT_ARRAY DynTag = 32
const DT_PREINIT_ARRAYSZ DynTag = 33
const DT_REL DynTag = 17
const DT_RELA DynTag = 7
const DT_RELACOUNT DynTag = 0x6ffffff9
const DT_RELAENT DynTag = 9
const DT_RELASZ DynTag = 8
const DT_RELCOUNT DynTag = 0x6ffffffa
const DT_RELENT DynTag = 19
const DT_RELSZ DynTag = 18
const DT_RPATH DynTag = 15
const DT_RUNPATH DynTag = 29
const DT_SONAME DynTag = 14
const DT_SPARC_REGISTER DynTag = 0x70000001
const DT_STRSZ DynTag = 10
const DT_STRTAB DynTag = 5
const DT_SYMBOLIC DynTag = 16
const DT_SYMENT DynTag = 11
const DT_SYMINENT DynTag = 0x6ffffdff
const DT_SYMINFO DynTag = 0x6ffffeff
const DT_SYMINSZ DynTag = 0x6ffffdfe
const DT_SYMTAB DynTag = 6
const DT_SYMTAB_SHNDX DynTag = 34
const DT_TEXTREL DynTag = 22
const DT_TLSDESC_GOT DynTag = 0x6ffffef7
const DT_TLSDESC_PLT DynTag = 0x6ffffef6
const DT_USED DynTag = 0x7ffffffe
const DT_VALRNGHI DynTag = 0x6ffffdff
const DT_VALRNGLO DynTag = 0x6ffffd00
const DT_VERDEF DynTag = 0x6ffffffc
const DT_VERDEFNUM DynTag = 0x6ffffffd
const DT_VERNEED DynTag = 0x6ffffffe
const DT_VERNEEDNUM DynTag = 0x6fffffff
const DT_VERSYM DynTag = 0x6ffffff0
Indexes into the Header.Ident array.
const EI_ABIVERSION = 8
Indexes into the Header.Ident array.
const EI_CLASS = 4
Indexes into the Header.Ident array.
const EI_DATA = 5
Indexes into the Header.Ident array.
const EI_NIDENT = 16
Indexes into the Header.Ident array.
const EI_OSABI = 7
Indexes into the Header.Ident array.
const EI_PAD = 9
Indexes into the Header.Ident array.
const EI_VERSION = 6
const ELFCLASS32 Class = 1
const ELFCLASS64 Class = 2
const ELFCLASSNONE Class = 0
const ELFDATA2LSB Data = 1
const ELFDATA2MSB Data = 2
const ELFDATANONE Data = 0
Initial magic number for ELF files.
const ELFMAG = "\177ELF"
const ELFOSABI_86OPEN OSABI = 5
const ELFOSABI_AIX OSABI = 7
const ELFOSABI_ARM OSABI = 97
const ELFOSABI_AROS OSABI = 15
const ELFOSABI_CLOUDABI OSABI = 17
const ELFOSABI_FENIXOS OSABI = 16
const ELFOSABI_FREEBSD OSABI = 9
const ELFOSABI_HPUX OSABI = 1
const ELFOSABI_HURD OSABI = 4
const ELFOSABI_IRIX OSABI = 8
const ELFOSABI_LINUX OSABI = 3
const ELFOSABI_MODESTO OSABI = 11
const ELFOSABI_NETBSD OSABI = 2
const ELFOSABI_NONE OSABI = 0
const ELFOSABI_NSK OSABI = 14
const ELFOSABI_OPENBSD OSABI = 12
const ELFOSABI_OPENVMS OSABI = 13
const ELFOSABI_SOLARIS OSABI = 6
const ELFOSABI_STANDALONE OSABI = 255
const ELFOSABI_TRU64 OSABI = 10
const EM_386 Machine = 3
Non-standard or deprecated.
const EM_486 Machine = 6
const EM_56800EX Machine = 200
const EM_68HC05 Machine = 72
const EM_68HC08 Machine = 71
const EM_68HC11 Machine = 70
const EM_68HC12 Machine = 53
const EM_68HC16 Machine = 69
const EM_68K Machine = 4
const EM_78KOR Machine = 199
const EM_8051 Machine = 165
const EM_860 Machine = 7
const EM_88K Machine = 5
const EM_960 Machine = 19
const EM_AARCH64 Machine = 183
const EM_ALPHA Machine = 0x9026
const EM_ALPHA_STD Machine = 41
const EM_ALTERA_NIOS2 Machine = 113
const EM_AMDGPU Machine = 224
const EM_ARC Machine = 45
const EM_ARCA Machine = 109
const EM_ARC_COMPACT Machine = 93
const EM_ARC_COMPACT2 Machine = 195
const EM_ARM Machine = 40
const EM_AVR Machine = 83
const EM_AVR32 Machine = 185
const EM_BA1 Machine = 201
const EM_BA2 Machine = 202
const EM_BLACKFIN Machine = 106
const EM_BPF Machine = 247
const EM_C166 Machine = 116
const EM_CDP Machine = 215
const EM_CE Machine = 119
const EM_CLOUDSHIELD Machine = 192
const EM_COGE Machine = 216
const EM_COLDFIRE Machine = 52
const EM_COOL Machine = 217
const EM_COREA_1ST Machine = 193
const EM_COREA_2ND Machine = 194
const EM_CR Machine = 103
const EM_CR16 Machine = 177
const EM_CRAYNV2 Machine = 172
const EM_CRIS Machine = 76
const EM_CRX Machine = 114
const EM_CSR_KALIMBA Machine = 219
const EM_CUDA Machine = 190
const EM_CYPRESS_M8C Machine = 161
const EM_D10V Machine = 85
const EM_D30V Machine = 86
const EM_DSP24 Machine = 136
const EM_DSPIC30F Machine = 118
const EM_DXP Machine = 112
const EM_ECOG1 Machine = 168
const EM_ECOG16 Machine = 176
const EM_ECOG1X Machine = 168
const EM_ECOG2 Machine = 134
const EM_ETPU Machine = 178
const EM_EXCESS Machine = 111
const EM_F2MC16 Machine = 104
const EM_FIREPATH Machine = 78
const EM_FR20 Machine = 37
const EM_FR30 Machine = 84
const EM_FT32 Machine = 222
const EM_FX66 Machine = 66
const EM_H8S Machine = 48
const EM_H8_300 Machine = 46
const EM_H8_300H Machine = 47
const EM_H8_500 Machine = 49
const EM_HUANY Machine = 81
const EM_IA_64 Machine = 50
const EM_INTEL205 Machine = 205
const EM_INTEL206 Machine = 206
const EM_INTEL207 Machine = 207
const EM_INTEL208 Machine = 208
const EM_INTEL209 Machine = 209
const EM_IP2K Machine = 101
const EM_JAVELIN Machine = 77
const EM_K10M Machine = 181
const EM_KM32 Machine = 210
const EM_KMX16 Machine = 212
const EM_KMX32 Machine = 211
const EM_KMX8 Machine = 213
const EM_KVARC Machine = 214
const EM_L10M Machine = 180
const EM_LANAI Machine = 244
const EM_LATTICEMICO32 Machine = 138
const EM_LOONGARCH Machine = 258
const EM_M16C Machine = 117
const EM_M32 Machine = 1
const EM_M32C Machine = 120
const EM_M32R Machine = 88
const EM_MANIK Machine = 171
const EM_MAX Machine = 102
const EM_MAXQ30 Machine = 169
const EM_MCHP_PIC Machine = 204
const EM_MCST_ELBRUS Machine = 175
const EM_ME16 Machine = 59
const EM_METAG Machine = 174
const EM_MICROBLAZE Machine = 189
const EM_MIPS Machine = 8
const EM_MIPS_RS3_LE Machine = 10
const EM_MIPS_RS4_BE Machine = 10
const EM_MIPS_X Machine = 51
const EM_MMA Machine = 54
const EM_MMDSP_PLUS Machine = 160
const EM_MMIX Machine = 80
const EM_MN10200 Machine = 90
const EM_MN10300 Machine = 89
const EM_MOXIE Machine = 223
const EM_MSP430 Machine = 105
const EM_NCPU Machine = 56
const EM_NDR1 Machine = 57
const EM_NDS32 Machine = 167
const EM_NONE Machine = 0
const EM_NORC Machine = 218
const EM_NS32K Machine = 97
const EM_OPEN8 Machine = 196
const EM_OPENRISC Machine = 92
const EM_PARISC Machine = 15
const EM_PCP Machine = 55
const EM_PDP10 Machine = 64
const EM_PDP11 Machine = 65
const EM_PDSP Machine = 63
const EM_PJ Machine = 91
const EM_PPC Machine = 20
const EM_PPC64 Machine = 21
const EM_PRISM Machine = 82
const EM_QDSP6 Machine = 164
const EM_R32C Machine = 162
const EM_RCE Machine = 39
const EM_RH32 Machine = 38
const EM_RISCV Machine = 243
const EM_RL78 Machine = 197
const EM_RS08 Machine = 132
const EM_RX Machine = 173
const EM_S370 Machine = 9
const EM_S390 Machine = 22
const EM_SCORE7 Machine = 135
const EM_SEP Machine = 108
const EM_SE_C17 Machine = 139
const EM_SE_C33 Machine = 107
const EM_SH Machine = 42
const EM_SHARC Machine = 133
const EM_SLE9X Machine = 179
const EM_SNP1K Machine = 99
const EM_SPARC Machine = 2
const EM_SPARC32PLUS Machine = 18
const EM_SPARCV9 Machine = 43
const EM_ST100 Machine = 60
const EM_ST19 Machine = 74
const EM_ST200 Machine = 100
const EM_ST7 Machine = 68
const EM_ST9PLUS Machine = 67
const EM_STARCORE Machine = 58
const EM_STM8 Machine = 186
const EM_STXP7X Machine = 166
const EM_SVX Machine = 73
const EM_TILE64 Machine = 187
const EM_TILEGX Machine = 191
const EM_TILEPRO Machine = 188
const EM_TINYJ Machine = 61
const EM_TI_ARP32 Machine = 143
const EM_TI_C2000 Machine = 141
const EM_TI_C5500 Machine = 142
const EM_TI_C6000 Machine = 140
const EM_TI_PRU Machine = 144
const EM_TMM_GPP Machine = 96
const EM_TPC Machine = 98
const EM_TRICORE Machine = 44
const EM_TRIMEDIA Machine = 163
const EM_TSK3000 Machine = 131
const EM_UNICORE Machine = 110
const EM_V800 Machine = 36
const EM_V850 Machine = 87
const EM_VAX Machine = 75
const EM_VIDEOCORE Machine = 95
const EM_VIDEOCORE3 Machine = 137
const EM_VIDEOCORE5 Machine = 198
const EM_VISIUM Machine = 221
const EM_VPP500 Machine = 17
const EM_X86_64 Machine = 62
const EM_XCORE Machine = 203
const EM_XGATE Machine = 115
const EM_XIMO16 Machine = 170
const EM_XTENSA Machine = 94
const EM_Z80 Machine = 220
const EM_ZSP Machine = 79
const ET_CORE Type = 4
const ET_DYN Type = 3
const ET_EXEC Type = 2
const ET_HIOS Type = 0xfeff
const ET_HIPROC Type = 0xffff
const ET_LOOS Type = 0xfe00
const ET_LOPROC Type = 0xff00
const ET_NONE Type = 0
const ET_REL Type = 1
const EV_CURRENT Version = 1
const EV_NONE Version = 0
ErrNoSymbols is returned by [File.Symbols] and [File.DynamicSymbols] if there is no such section in the File.
var ErrNoSymbols = *ast.CallExpr
const NT_FPREGSET NType = 2
const NT_PRPSINFO NType = 3
const NT_PRSTATUS NType = 1
const PF_MASKOS ProgFlag = 0x0ff00000
const PF_MASKPROC ProgFlag = 0xf0000000
const PF_R ProgFlag = 0x4
const PF_W ProgFlag = 0x2
const PF_X ProgFlag = 0x1
const PT_AARCH64_ARCHEXT ProgType = 0x70000000
const PT_AARCH64_UNWIND ProgType = 0x70000001
const PT_ARM_ARCHEXT ProgType = 0x70000000
const PT_ARM_EXIDX ProgType = 0x70000001
const PT_DYNAMIC ProgType = 2
const PT_GNU_EH_FRAME ProgType = 0x6474e550
const PT_GNU_MBIND_HI ProgType = 0x6474f554
const PT_GNU_MBIND_LO ProgType = 0x6474e555
const PT_GNU_PROPERTY ProgType = 0x6474e553
const PT_GNU_RELRO ProgType = 0x6474e552
const PT_GNU_STACK ProgType = 0x6474e551
const PT_HIOS ProgType = 0x6fffffff
const PT_HIPROC ProgType = 0x7fffffff
const PT_INTERP ProgType = 3
const PT_LOAD ProgType = 1
const PT_LOOS ProgType = 0x60000000
const PT_LOPROC ProgType = 0x70000000
const PT_MIPS_ABIFLAGS ProgType = 0x70000003
const PT_MIPS_OPTIONS ProgType = 0x70000002
const PT_MIPS_REGINFO ProgType = 0x70000000
const PT_MIPS_RTPROC ProgType = 0x70000001
const PT_NOTE ProgType = 4
const PT_NULL ProgType = 0
const PT_OPENBSD_BOOTDATA ProgType = 0x65a41be6
const PT_OPENBSD_NOBTCFI ProgType = 0x65a3dbe8
const PT_OPENBSD_RANDOMIZE ProgType = 0x65a3dbe6
const PT_OPENBSD_WXNEEDED ProgType = 0x65a3dbe7
const PT_PAX_FLAGS ProgType = 0x65041580
const PT_PHDR ProgType = 6
const PT_S390_PGSTE ProgType = 0x70000000
const PT_SHLIB ProgType = 5
const PT_SUNWSTACK ProgType = 0x6ffffffb
const PT_SUNW_EH_FRAME ProgType = 0x6474e550
const PT_TLS ProgType = 7
const R_386_16 R_386 = 20
const R_386_32 R_386 = 1
const R_386_32PLT R_386 = 11
const R_386_8 R_386 = 22
const R_386_COPY R_386 = 5
const R_386_GLOB_DAT R_386 = 6
const R_386_GOT32 R_386 = 3
const R_386_GOT32X R_386 = 43
const R_386_GOTOFF R_386 = 9
const R_386_GOTPC R_386 = 10
const R_386_IRELATIVE R_386 = 42
const R_386_JMP_SLOT R_386 = 7
const R_386_NONE R_386 = 0
const R_386_PC16 R_386 = 21
const R_386_PC32 R_386 = 2
const R_386_PC8 R_386 = 23
const R_386_PLT32 R_386 = 4
const R_386_RELATIVE R_386 = 8
const R_386_SIZE32 R_386 = 38
const R_386_TLS_DESC R_386 = 41
const R_386_TLS_DESC_CALL R_386 = 40
const R_386_TLS_DTPMOD32 R_386 = 35
const R_386_TLS_DTPOFF32 R_386 = 36
const R_386_TLS_GD R_386 = 18
const R_386_TLS_GD_32 R_386 = 24
const R_386_TLS_GD_CALL R_386 = 26
const R_386_TLS_GD_POP R_386 = 27
const R_386_TLS_GD_PUSH R_386 = 25
const R_386_TLS_GOTDESC R_386 = 39
const R_386_TLS_GOTIE R_386 = 16
const R_386_TLS_IE R_386 = 15
const R_386_TLS_IE_32 R_386 = 33
const R_386_TLS_LDM R_386 = 19
const R_386_TLS_LDM_32 R_386 = 28
const R_386_TLS_LDM_CALL R_386 = 30
const R_386_TLS_LDM_POP R_386 = 31
const R_386_TLS_LDM_PUSH R_386 = 29
const R_386_TLS_LDO_32 R_386 = 32
const R_386_TLS_LE R_386 = 17
const R_386_TLS_LE_32 R_386 = 34
const R_386_TLS_TPOFF R_386 = 14
const R_386_TLS_TPOFF32 R_386 = 37
const R_390_12 R_390 = 2
const R_390_16 R_390 = 3
const R_390_20 R_390 = 57
const R_390_32 R_390 = 4
const R_390_64 R_390 = 22
const R_390_8 R_390 = 1
const R_390_COPY R_390 = 9
const R_390_GLOB_DAT R_390 = 10
const R_390_GOT12 R_390 = 6
const R_390_GOT16 R_390 = 15
const R_390_GOT20 R_390 = 58
const R_390_GOT32 R_390 = 7
const R_390_GOT64 R_390 = 24
const R_390_GOTENT R_390 = 26
const R_390_GOTOFF R_390 = 13
const R_390_GOTOFF16 R_390 = 27
const R_390_GOTOFF64 R_390 = 28
const R_390_GOTPC R_390 = 14
const R_390_GOTPCDBL R_390 = 21
const R_390_GOTPLT12 R_390 = 29
const R_390_GOTPLT16 R_390 = 30
const R_390_GOTPLT20 R_390 = 59
const R_390_GOTPLT32 R_390 = 31
const R_390_GOTPLT64 R_390 = 32
const R_390_GOTPLTENT R_390 = 33
const R_390_GOTPLTOFF16 R_390 = 34
const R_390_GOTPLTOFF32 R_390 = 35
const R_390_GOTPLTOFF64 R_390 = 36
const R_390_JMP_SLOT R_390 = 11
const R_390_NONE R_390 = 0
const R_390_PC16 R_390 = 16
const R_390_PC16DBL R_390 = 17
const R_390_PC32 R_390 = 5
const R_390_PC32DBL R_390 = 19
const R_390_PC64 R_390 = 23
const R_390_PLT16DBL R_390 = 18
const R_390_PLT32 R_390 = 8
const R_390_PLT32DBL R_390 = 20
const R_390_PLT64 R_390 = 25
const R_390_RELATIVE R_390 = 12
const R_390_TLS_DTPMOD R_390 = 54
const R_390_TLS_DTPOFF R_390 = 55
const R_390_TLS_GD32 R_390 = 40
const R_390_TLS_GD64 R_390 = 41
const R_390_TLS_GDCALL R_390 = 38
const R_390_TLS_GOTIE12 R_390 = 42
const R_390_TLS_GOTIE20 R_390 = 60
const R_390_TLS_GOTIE32 R_390 = 43
const R_390_TLS_GOTIE64 R_390 = 44
const R_390_TLS_IE32 R_390 = 47
const R_390_TLS_IE64 R_390 = 48
const R_390_TLS_IEENT R_390 = 49
const R_390_TLS_LDCALL R_390 = 39
const R_390_TLS_LDM32 R_390 = 45
const R_390_TLS_LDM64 R_390 = 46
const R_390_TLS_LDO32 R_390 = 52
const R_390_TLS_LDO64 R_390 = 53
const R_390_TLS_LE32 R_390 = 50
const R_390_TLS_LE64 R_390 = 51
const R_390_TLS_LOAD R_390 = 37
const R_390_TLS_TPOFF R_390 = 56
const R_AARCH64_ABS16 R_AARCH64 = 259
const R_AARCH64_ABS32 R_AARCH64 = 258
const R_AARCH64_ABS64 R_AARCH64 = 257
const R_AARCH64_ADD_ABS_LO12_NC R_AARCH64 = 277
const R_AARCH64_ADR_GOT_PAGE R_AARCH64 = 311
const R_AARCH64_ADR_PREL_LO21 R_AARCH64 = 274
const R_AARCH64_ADR_PREL_PG_HI21 R_AARCH64 = 275
const R_AARCH64_ADR_PREL_PG_HI21_NC R_AARCH64 = 276
const R_AARCH64_CALL26 R_AARCH64 = 283
const R_AARCH64_CONDBR19 R_AARCH64 = 280
const R_AARCH64_COPY R_AARCH64 = 1024
const R_AARCH64_GLOB_DAT R_AARCH64 = 1025
const R_AARCH64_GOT_LD_PREL19 R_AARCH64 = 309
const R_AARCH64_IRELATIVE R_AARCH64 = 1032
const R_AARCH64_JUMP26 R_AARCH64 = 282
const R_AARCH64_JUMP_SLOT R_AARCH64 = 1026
const R_AARCH64_LD64_GOTOFF_LO15 R_AARCH64 = 310
const R_AARCH64_LD64_GOTPAGE_LO15 R_AARCH64 = 313
const R_AARCH64_LD64_GOT_LO12_NC R_AARCH64 = 312
const R_AARCH64_LDST128_ABS_LO12_NC R_AARCH64 = 299
const R_AARCH64_LDST16_ABS_LO12_NC R_AARCH64 = 284
const R_AARCH64_LDST32_ABS_LO12_NC R_AARCH64 = 285
const R_AARCH64_LDST64_ABS_LO12_NC R_AARCH64 = 286
const R_AARCH64_LDST8_ABS_LO12_NC R_AARCH64 = 278
const R_AARCH64_LD_PREL_LO19 R_AARCH64 = 273
const R_AARCH64_MOVW_SABS_G0 R_AARCH64 = 270
const R_AARCH64_MOVW_SABS_G1 R_AARCH64 = 271
const R_AARCH64_MOVW_SABS_G2 R_AARCH64 = 272
const R_AARCH64_MOVW_UABS_G0 R_AARCH64 = 263
const R_AARCH64_MOVW_UABS_G0_NC R_AARCH64 = 264
const R_AARCH64_MOVW_UABS_G1 R_AARCH64 = 265
const R_AARCH64_MOVW_UABS_G1_NC R_AARCH64 = 266
const R_AARCH64_MOVW_UABS_G2 R_AARCH64 = 267
const R_AARCH64_MOVW_UABS_G2_NC R_AARCH64 = 268
const R_AARCH64_MOVW_UABS_G3 R_AARCH64 = 269
const R_AARCH64_NONE R_AARCH64 = 0
const R_AARCH64_NULL R_AARCH64 = 256
const R_AARCH64_P32_ABS16 R_AARCH64 = 2
const R_AARCH64_P32_ABS32 R_AARCH64 = 1
const R_AARCH64_P32_ADD_ABS_LO12_NC R_AARCH64 = 12
const R_AARCH64_P32_ADR_GOT_PAGE R_AARCH64 = 26
const R_AARCH64_P32_ADR_PREL_LO21 R_AARCH64 = 10
const R_AARCH64_P32_ADR_PREL_PG_HI21 R_AARCH64 = 11
const R_AARCH64_P32_CALL26 R_AARCH64 = 21
const R_AARCH64_P32_CONDBR19 R_AARCH64 = 19
const R_AARCH64_P32_COPY R_AARCH64 = 180
const R_AARCH64_P32_GLOB_DAT R_AARCH64 = 181
const R_AARCH64_P32_GOT_LD_PREL19 R_AARCH64 = 25
const R_AARCH64_P32_IRELATIVE R_AARCH64 = 188
const R_AARCH64_P32_JUMP26 R_AARCH64 = 20
const R_AARCH64_P32_JUMP_SLOT R_AARCH64 = 182
const R_AARCH64_P32_LD32_GOT_LO12_NC R_AARCH64 = 27
const R_AARCH64_P32_LDST128_ABS_LO12_NC R_AARCH64 = 17
const R_AARCH64_P32_LDST16_ABS_LO12_NC R_AARCH64 = 14
const R_AARCH64_P32_LDST32_ABS_LO12_NC R_AARCH64 = 15
const R_AARCH64_P32_LDST64_ABS_LO12_NC R_AARCH64 = 16
const R_AARCH64_P32_LDST8_ABS_LO12_NC R_AARCH64 = 13
const R_AARCH64_P32_LD_PREL_LO19 R_AARCH64 = 9
const R_AARCH64_P32_MOVW_SABS_G0 R_AARCH64 = 8
const R_AARCH64_P32_MOVW_UABS_G0 R_AARCH64 = 5
const R_AARCH64_P32_MOVW_UABS_G0_NC R_AARCH64 = 6
const R_AARCH64_P32_MOVW_UABS_G1 R_AARCH64 = 7
const R_AARCH64_P32_PREL16 R_AARCH64 = 4
const R_AARCH64_P32_PREL32 R_AARCH64 = 3
const R_AARCH64_P32_RELATIVE R_AARCH64 = 183
const R_AARCH64_P32_TLSDESC R_AARCH64 = 187
const R_AARCH64_P32_TLSDESC_ADD_LO12_NC R_AARCH64 = 126
const R_AARCH64_P32_TLSDESC_ADR_PAGE21 R_AARCH64 = 124
const R_AARCH64_P32_TLSDESC_ADR_PREL21 R_AARCH64 = 123
const R_AARCH64_P32_TLSDESC_CALL R_AARCH64 = 127
const R_AARCH64_P32_TLSDESC_LD32_LO12_NC R_AARCH64 = 125
const R_AARCH64_P32_TLSDESC_LD_PREL19 R_AARCH64 = 122
const R_AARCH64_P32_TLSGD_ADD_LO12_NC R_AARCH64 = 82
const R_AARCH64_P32_TLSGD_ADR_PAGE21 R_AARCH64 = 81
const R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21 R_AARCH64 = 103
const R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC R_AARCH64 = 104
const R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19 R_AARCH64 = 105
const R_AARCH64_P32_TLSLE_ADD_TPREL_HI12 R_AARCH64 = 109
const R_AARCH64_P32_TLSLE_ADD_TPREL_LO12 R_AARCH64 = 110
const R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC R_AARCH64 = 111
const R_AARCH64_P32_TLSLE_MOVW_TPREL_G0 R_AARCH64 = 107
const R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC R_AARCH64 = 108
const R_AARCH64_P32_TLSLE_MOVW_TPREL_G1 R_AARCH64 = 106
const R_AARCH64_P32_TLS_DTPMOD R_AARCH64 = 184
const R_AARCH64_P32_TLS_DTPREL R_AARCH64 = 185
const R_AARCH64_P32_TLS_TPREL R_AARCH64 = 186
const R_AARCH64_P32_TSTBR14 R_AARCH64 = 18
const R_AARCH64_PREL16 R_AARCH64 = 262
const R_AARCH64_PREL32 R_AARCH64 = 261
const R_AARCH64_PREL64 R_AARCH64 = 260
const R_AARCH64_RELATIVE R_AARCH64 = 1027
const R_AARCH64_TLSDESC R_AARCH64 = 1031
const R_AARCH64_TLSDESC_ADD R_AARCH64 = 568
const R_AARCH64_TLSDESC_ADD_LO12_NC R_AARCH64 = 564
const R_AARCH64_TLSDESC_ADR_PAGE21 R_AARCH64 = 562
const R_AARCH64_TLSDESC_ADR_PREL21 R_AARCH64 = 561
const R_AARCH64_TLSDESC_CALL R_AARCH64 = 569
const R_AARCH64_TLSDESC_LD64_LO12_NC R_AARCH64 = 563
const R_AARCH64_TLSDESC_LDR R_AARCH64 = 567
const R_AARCH64_TLSDESC_LD_PREL19 R_AARCH64 = 560
const R_AARCH64_TLSDESC_OFF_G0_NC R_AARCH64 = 566
const R_AARCH64_TLSDESC_OFF_G1 R_AARCH64 = 565
const R_AARCH64_TLSGD_ADD_LO12_NC R_AARCH64 = 514
const R_AARCH64_TLSGD_ADR_PAGE21 R_AARCH64 = 513
const R_AARCH64_TLSGD_ADR_PREL21 R_AARCH64 = 512
const R_AARCH64_TLSGD_MOVW_G0_NC R_AARCH64 = 516
const R_AARCH64_TLSGD_MOVW_G1 R_AARCH64 = 515
const R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 R_AARCH64 = 541
const R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC R_AARCH64 = 542
const R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 R_AARCH64 = 543
const R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC R_AARCH64 = 540
const R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 R_AARCH64 = 539
const R_AARCH64_TLSLD_ADR_PAGE21 R_AARCH64 = 518
const R_AARCH64_TLSLD_ADR_PREL21 R_AARCH64 = 517
const R_AARCH64_TLSLD_LDST128_DTPREL_LO12 R_AARCH64 = 572
const R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC R_AARCH64 = 573
const R_AARCH64_TLSLE_ADD_TPREL_HI12 R_AARCH64 = 549
const R_AARCH64_TLSLE_ADD_TPREL_LO12 R_AARCH64 = 550
const R_AARCH64_TLSLE_ADD_TPREL_LO12_NC R_AARCH64 = 551
const R_AARCH64_TLSLE_LDST128_TPREL_LO12 R_AARCH64 = 570
const R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC R_AARCH64 = 571
const R_AARCH64_TLSLE_MOVW_TPREL_G0 R_AARCH64 = 547
const R_AARCH64_TLSLE_MOVW_TPREL_G0_NC R_AARCH64 = 548
const R_AARCH64_TLSLE_MOVW_TPREL_G1 R_AARCH64 = 545
const R_AARCH64_TLSLE_MOVW_TPREL_G1_NC R_AARCH64 = 546
const R_AARCH64_TLSLE_MOVW_TPREL_G2 R_AARCH64 = 544
const R_AARCH64_TLS_DTPMOD64 R_AARCH64 = 1028
const R_AARCH64_TLS_DTPREL64 R_AARCH64 = 1029
const R_AARCH64_TLS_TPREL64 R_AARCH64 = 1030
const R_AARCH64_TSTBR14 R_AARCH64 = 279
const R_ALPHA_BRADDR R_ALPHA = 7
const R_ALPHA_COPY R_ALPHA = 24
const R_ALPHA_GLOB_DAT R_ALPHA = 25
const R_ALPHA_GPDISP R_ALPHA = 6
const R_ALPHA_GPREL32 R_ALPHA = 3
const R_ALPHA_GPRELHIGH R_ALPHA = 17
const R_ALPHA_GPRELLOW R_ALPHA = 18
const R_ALPHA_GPVALUE R_ALPHA = 16
const R_ALPHA_HINT R_ALPHA = 8
const R_ALPHA_IMMED_BR_HI32 R_ALPHA = 22
const R_ALPHA_IMMED_GP_16 R_ALPHA = 19
const R_ALPHA_IMMED_GP_HI32 R_ALPHA = 20
const R_ALPHA_IMMED_LO32 R_ALPHA = 23
const R_ALPHA_IMMED_SCN_HI32 R_ALPHA = 21
const R_ALPHA_JMP_SLOT R_ALPHA = 26
const R_ALPHA_LITERAL R_ALPHA = 4
const R_ALPHA_LITUSE R_ALPHA = 5
const R_ALPHA_NONE R_ALPHA = 0
const R_ALPHA_OP_PRSHIFT R_ALPHA = 15
const R_ALPHA_OP_PSUB R_ALPHA = 14
const R_ALPHA_OP_PUSH R_ALPHA = 12
const R_ALPHA_OP_STORE R_ALPHA = 13
const R_ALPHA_REFLONG R_ALPHA = 1
const R_ALPHA_REFQUAD R_ALPHA = 2
const R_ALPHA_RELATIVE R_ALPHA = 27
const R_ALPHA_SREL16 R_ALPHA = 9
const R_ALPHA_SREL32 R_ALPHA = 10
const R_ALPHA_SREL64 R_ALPHA = 11
const R_ARM_ABS12 R_ARM = 6
const R_ARM_ABS16 R_ARM = 5
const R_ARM_ABS32 R_ARM = 2
const R_ARM_ABS32_NOI R_ARM = 55
const R_ARM_ABS8 R_ARM = 8
const R_ARM_ALU_PCREL_15_8 R_ARM = 33
const R_ARM_ALU_PCREL_23_15 R_ARM = 34
const R_ARM_ALU_PCREL_7_0 R_ARM = 32
const R_ARM_ALU_PC_G0 R_ARM = 58
const R_ARM_ALU_PC_G0_NC R_ARM = 57
const R_ARM_ALU_PC_G1 R_ARM = 60
const R_ARM_ALU_PC_G1_NC R_ARM = 59
const R_ARM_ALU_PC_G2 R_ARM = 61
const R_ARM_ALU_SBREL_19_12_NC R_ARM = 36
const R_ARM_ALU_SBREL_27_20_CK R_ARM = 37
const R_ARM_ALU_SB_G0 R_ARM = 71
const R_ARM_ALU_SB_G0_NC R_ARM = 70
const R_ARM_ALU_SB_G1 R_ARM = 73
const R_ARM_ALU_SB_G1_NC R_ARM = 72
const R_ARM_ALU_SB_G2 R_ARM = 74
const R_ARM_AMP_VCALL9 R_ARM = 12
const R_ARM_BASE_ABS R_ARM = 31
const R_ARM_CALL R_ARM = 28
const R_ARM_COPY R_ARM = 20
const R_ARM_GLOB_DAT R_ARM = 21
const R_ARM_GNU_VTENTRY R_ARM = 100
const R_ARM_GNU_VTINHERIT R_ARM = 101
const R_ARM_GOT32 R_ARM = 26
const R_ARM_GOTOFF R_ARM = 24
const R_ARM_GOTOFF12 R_ARM = 98
const R_ARM_GOTPC R_ARM = 25
const R_ARM_GOTRELAX R_ARM = 99
const R_ARM_GOT_ABS R_ARM = 95
const R_ARM_GOT_BREL12 R_ARM = 97
const R_ARM_GOT_PREL R_ARM = 96
const R_ARM_IRELATIVE R_ARM = 160
const R_ARM_JUMP24 R_ARM = 29
const R_ARM_JUMP_SLOT R_ARM = 22
const R_ARM_LDC_PC_G0 R_ARM = 67
const R_ARM_LDC_PC_G1 R_ARM = 68
const R_ARM_LDC_PC_G2 R_ARM = 69
const R_ARM_LDC_SB_G0 R_ARM = 81
const R_ARM_LDC_SB_G1 R_ARM = 82
const R_ARM_LDC_SB_G2 R_ARM = 83
const R_ARM_LDRS_PC_G0 R_ARM = 64
const R_ARM_LDRS_PC_G1 R_ARM = 65
const R_ARM_LDRS_PC_G2 R_ARM = 66
const R_ARM_LDRS_SB_G0 R_ARM = 78
const R_ARM_LDRS_SB_G1 R_ARM = 79
const R_ARM_LDRS_SB_G2 R_ARM = 80
const R_ARM_LDR_PC_G1 R_ARM = 62
const R_ARM_LDR_PC_G2 R_ARM = 63
const R_ARM_LDR_SBREL_11_10_NC R_ARM = 35
const R_ARM_LDR_SB_G0 R_ARM = 75
const R_ARM_LDR_SB_G1 R_ARM = 76
const R_ARM_LDR_SB_G2 R_ARM = 77
const R_ARM_ME_TOO R_ARM = 128
const R_ARM_MOVT_ABS R_ARM = 44
const R_ARM_MOVT_BREL R_ARM = 85
const R_ARM_MOVT_PREL R_ARM = 46
const R_ARM_MOVW_ABS_NC R_ARM = 43
const R_ARM_MOVW_BREL R_ARM = 86
const R_ARM_MOVW_BREL_NC R_ARM = 84
const R_ARM_MOVW_PREL_NC R_ARM = 45
const R_ARM_NONE R_ARM = 0
const R_ARM_PC13 R_ARM = 4
const R_ARM_PC24 R_ARM = 1
const R_ARM_PLT32 R_ARM = 27
const R_ARM_PLT32_ABS R_ARM = 94
const R_ARM_PREL31 R_ARM = 42
const R_ARM_PRIVATE_0 R_ARM = 112
const R_ARM_PRIVATE_1 R_ARM = 113
const R_ARM_PRIVATE_10 R_ARM = 122
const R_ARM_PRIVATE_11 R_ARM = 123
const R_ARM_PRIVATE_12 R_ARM = 124
const R_ARM_PRIVATE_13 R_ARM = 125
const R_ARM_PRIVATE_14 R_ARM = 126
const R_ARM_PRIVATE_15 R_ARM = 127
const R_ARM_PRIVATE_2 R_ARM = 114
const R_ARM_PRIVATE_3 R_ARM = 115
const R_ARM_PRIVATE_4 R_ARM = 116
const R_ARM_PRIVATE_5 R_ARM = 117
const R_ARM_PRIVATE_6 R_ARM = 118
const R_ARM_PRIVATE_7 R_ARM = 119
const R_ARM_PRIVATE_8 R_ARM = 120
const R_ARM_PRIVATE_9 R_ARM = 121
const R_ARM_RABS32 R_ARM = 253
const R_ARM_RBASE R_ARM = 255
const R_ARM_REL32 R_ARM = 3
const R_ARM_REL32_NOI R_ARM = 56
const R_ARM_RELATIVE R_ARM = 23
const R_ARM_RPC24 R_ARM = 254
const R_ARM_RREL32 R_ARM = 252
const R_ARM_RSBREL32 R_ARM = 250
const R_ARM_RXPC25 R_ARM = 249
const R_ARM_SBREL31 R_ARM = 39
const R_ARM_SBREL32 R_ARM = 9
const R_ARM_SWI24 R_ARM = 13
const R_ARM_TARGET1 R_ARM = 38
const R_ARM_TARGET2 R_ARM = 41
const R_ARM_THM_ABS5 R_ARM = 7
const R_ARM_THM_ALU_ABS_G0_NC R_ARM = 132
const R_ARM_THM_ALU_ABS_G1_NC R_ARM = 133
const R_ARM_THM_ALU_ABS_G2_NC R_ARM = 134
const R_ARM_THM_ALU_ABS_G3 R_ARM = 135
const R_ARM_THM_ALU_PREL_11_0 R_ARM = 53
const R_ARM_THM_GOT_BREL12 R_ARM = 131
const R_ARM_THM_JUMP11 R_ARM = 102
const R_ARM_THM_JUMP19 R_ARM = 51
const R_ARM_THM_JUMP24 R_ARM = 30
const R_ARM_THM_JUMP6 R_ARM = 52
const R_ARM_THM_JUMP8 R_ARM = 103
const R_ARM_THM_MOVT_ABS R_ARM = 48
const R_ARM_THM_MOVT_BREL R_ARM = 88
const R_ARM_THM_MOVT_PREL R_ARM = 50
const R_ARM_THM_MOVW_ABS_NC R_ARM = 47
const R_ARM_THM_MOVW_BREL R_ARM = 89
const R_ARM_THM_MOVW_BREL_NC R_ARM = 87
const R_ARM_THM_MOVW_PREL_NC R_ARM = 49
const R_ARM_THM_PC12 R_ARM = 54
const R_ARM_THM_PC22 R_ARM = 10
const R_ARM_THM_PC8 R_ARM = 11
const R_ARM_THM_RPC22 R_ARM = 251
const R_ARM_THM_SWI8 R_ARM = 14
const R_ARM_THM_TLS_CALL R_ARM = 93
const R_ARM_THM_TLS_DESCSEQ16 R_ARM = 129
const R_ARM_THM_TLS_DESCSEQ32 R_ARM = 130
const R_ARM_THM_XPC22 R_ARM = 16
const R_ARM_TLS_CALL R_ARM = 91
const R_ARM_TLS_DESCSEQ R_ARM = 92
const R_ARM_TLS_DTPMOD32 R_ARM = 17
const R_ARM_TLS_DTPOFF32 R_ARM = 18
const R_ARM_TLS_GD32 R_ARM = 104
const R_ARM_TLS_GOTDESC R_ARM = 90
const R_ARM_TLS_IE12GP R_ARM = 111
const R_ARM_TLS_IE32 R_ARM = 107
const R_ARM_TLS_LDM32 R_ARM = 105
const R_ARM_TLS_LDO12 R_ARM = 109
const R_ARM_TLS_LDO32 R_ARM = 106
const R_ARM_TLS_LE12 R_ARM = 110
const R_ARM_TLS_LE32 R_ARM = 108
const R_ARM_TLS_TPOFF32 R_ARM = 19
const R_ARM_V4BX R_ARM = 40
const R_ARM_XPC25 R_ARM = 15
const R_LARCH_32 R_LARCH = 1
const R_LARCH_32_PCREL R_LARCH = 99
const R_LARCH_64 R_LARCH = 2
const R_LARCH_64_PCREL R_LARCH = 109
const R_LARCH_ABS64_HI12 R_LARCH = 70
const R_LARCH_ABS64_LO20 R_LARCH = 69
const R_LARCH_ABS_HI20 R_LARCH = 67
const R_LARCH_ABS_LO12 R_LARCH = 68
const R_LARCH_ADD16 R_LARCH = 48
const R_LARCH_ADD24 R_LARCH = 49
const R_LARCH_ADD32 R_LARCH = 50
const R_LARCH_ADD6 R_LARCH = 105
const R_LARCH_ADD64 R_LARCH = 51
const R_LARCH_ADD8 R_LARCH = 47
const R_LARCH_ADD_ULEB128 R_LARCH = 107
const R_LARCH_ALIGN R_LARCH = 102
const R_LARCH_B16 R_LARCH = 64
const R_LARCH_B21 R_LARCH = 65
const R_LARCH_B26 R_LARCH = 66
const R_LARCH_CFA R_LARCH = 104
const R_LARCH_COPY R_LARCH = 4
const R_LARCH_DELETE R_LARCH = 101
const R_LARCH_GNU_VTENTRY R_LARCH = 58
const R_LARCH_GNU_VTINHERIT R_LARCH = 57
const R_LARCH_GOT64_HI12 R_LARCH = 82
const R_LARCH_GOT64_LO20 R_LARCH = 81
const R_LARCH_GOT64_PC_HI12 R_LARCH = 78
const R_LARCH_GOT64_PC_LO20 R_LARCH = 77
const R_LARCH_GOT_HI20 R_LARCH = 79
const R_LARCH_GOT_LO12 R_LARCH = 80
const R_LARCH_GOT_PC_HI20 R_LARCH = 75
const R_LARCH_GOT_PC_LO12 R_LARCH = 76
const R_LARCH_IRELATIVE R_LARCH = 12
const R_LARCH_JUMP_SLOT R_LARCH = 5
const R_LARCH_MARK_LA R_LARCH = 20
const R_LARCH_MARK_PCREL R_LARCH = 21
const R_LARCH_NONE R_LARCH = 0
const R_LARCH_PCALA64_HI12 R_LARCH = 74
const R_LARCH_PCALA64_LO20 R_LARCH = 73
const R_LARCH_PCALA_HI20 R_LARCH = 71
const R_LARCH_PCALA_LO12 R_LARCH = 72
const R_LARCH_PCREL20_S2 R_LARCH = 103
const R_LARCH_RELATIVE R_LARCH = 3
const R_LARCH_RELAX R_LARCH = 100
const R_LARCH_SOP_ADD R_LARCH = 35
const R_LARCH_SOP_AND R_LARCH = 36
const R_LARCH_SOP_ASSERT R_LARCH = 30
const R_LARCH_SOP_IF_ELSE R_LARCH = 37
const R_LARCH_SOP_NOT R_LARCH = 31
const R_LARCH_SOP_POP_32_S_0_10_10_16_S2 R_LARCH = 45
const R_LARCH_SOP_POP_32_S_0_5_10_16_S2 R_LARCH = 44
const R_LARCH_SOP_POP_32_S_10_12 R_LARCH = 40
const R_LARCH_SOP_POP_32_S_10_16 R_LARCH = 41
const R_LARCH_SOP_POP_32_S_10_16_S2 R_LARCH = 42
const R_LARCH_SOP_POP_32_S_10_5 R_LARCH = 38
const R_LARCH_SOP_POP_32_S_5_20 R_LARCH = 43
const R_LARCH_SOP_POP_32_U R_LARCH = 46
const R_LARCH_SOP_POP_32_U_10_12 R_LARCH = 39
const R_LARCH_SOP_PUSH_ABSOLUTE R_LARCH = 23
const R_LARCH_SOP_PUSH_DUP R_LARCH = 24
const R_LARCH_SOP_PUSH_GPREL R_LARCH = 25
const R_LARCH_SOP_PUSH_PCREL R_LARCH = 22
const R_LARCH_SOP_PUSH_PLT_PCREL R_LARCH = 29
const R_LARCH_SOP_PUSH_TLS_GD R_LARCH = 28
const R_LARCH_SOP_PUSH_TLS_GOT R_LARCH = 27
const R_LARCH_SOP_PUSH_TLS_TPREL R_LARCH = 26
const R_LARCH_SOP_SL R_LARCH = 33
const R_LARCH_SOP_SR R_LARCH = 34
const R_LARCH_SOP_SUB R_LARCH = 32
const R_LARCH_SUB16 R_LARCH = 53
const R_LARCH_SUB24 R_LARCH = 54
const R_LARCH_SUB32 R_LARCH = 55
const R_LARCH_SUB6 R_LARCH = 106
const R_LARCH_SUB64 R_LARCH = 56
const R_LARCH_SUB8 R_LARCH = 52
const R_LARCH_SUB_ULEB128 R_LARCH = 108
const R_LARCH_TLS_DTPMOD32 R_LARCH = 6
const R_LARCH_TLS_DTPMOD64 R_LARCH = 7
const R_LARCH_TLS_DTPREL32 R_LARCH = 8
const R_LARCH_TLS_DTPREL64 R_LARCH = 9
const R_LARCH_TLS_GD_HI20 R_LARCH = 98
const R_LARCH_TLS_GD_PC_HI20 R_LARCH = 97
const R_LARCH_TLS_IE64_HI12 R_LARCH = 94
const R_LARCH_TLS_IE64_LO20 R_LARCH = 93
const R_LARCH_TLS_IE64_PC_HI12 R_LARCH = 90
const R_LARCH_TLS_IE64_PC_LO20 R_LARCH = 89
const R_LARCH_TLS_IE_HI20 R_LARCH = 91
const R_LARCH_TLS_IE_LO12 R_LARCH = 92
const R_LARCH_TLS_IE_PC_HI20 R_LARCH = 87
const R_LARCH_TLS_IE_PC_LO12 R_LARCH = 88
const R_LARCH_TLS_LD_HI20 R_LARCH = 96
const R_LARCH_TLS_LD_PC_HI20 R_LARCH = 95
const R_LARCH_TLS_LE64_HI12 R_LARCH = 86
const R_LARCH_TLS_LE64_LO20 R_LARCH = 85
const R_LARCH_TLS_LE_HI20 R_LARCH = 83
const R_LARCH_TLS_LE_LO12 R_LARCH = 84
const R_LARCH_TLS_TPREL32 R_LARCH = 10
const R_LARCH_TLS_TPREL64 R_LARCH = 11
const R_MIPS_16 R_MIPS = 1
const R_MIPS_26 R_MIPS = 4
const R_MIPS_32 R_MIPS = 2
const R_MIPS_64 R_MIPS = 18
const R_MIPS_ADD_IMMEDIATE R_MIPS = 34
const R_MIPS_CALL16 R_MIPS = 11
const R_MIPS_CALL_HI16 R_MIPS = 30
const R_MIPS_CALL_LO16 R_MIPS = 31
const R_MIPS_DELETE R_MIPS = 27
const R_MIPS_GOT16 R_MIPS = 9
const R_MIPS_GOT_DISP R_MIPS = 19
const R_MIPS_GOT_HI16 R_MIPS = 22
const R_MIPS_GOT_LO16 R_MIPS = 23
const R_MIPS_GOT_OFST R_MIPS = 21
const R_MIPS_GOT_PAGE R_MIPS = 20
const R_MIPS_GPREL16 R_MIPS = 7
const R_MIPS_GPREL32 R_MIPS = 12
const R_MIPS_HI16 R_MIPS = 5
const R_MIPS_HIGHER R_MIPS = 28
const R_MIPS_HIGHEST R_MIPS = 29
const R_MIPS_INSERT_A R_MIPS = 25
const R_MIPS_INSERT_B R_MIPS = 26
const R_MIPS_JALR R_MIPS = 37
const R_MIPS_LITERAL R_MIPS = 8
const R_MIPS_LO16 R_MIPS = 6
const R_MIPS_NONE R_MIPS = 0
const R_MIPS_PC16 R_MIPS = 10
const R_MIPS_PC32 R_MIPS = 248
const R_MIPS_PJUMP R_MIPS = 35
const R_MIPS_REL16 R_MIPS = 33
const R_MIPS_REL32 R_MIPS = 3
const R_MIPS_RELGOT R_MIPS = 36
const R_MIPS_SCN_DISP R_MIPS = 32
const R_MIPS_SHIFT5 R_MIPS = 16
const R_MIPS_SHIFT6 R_MIPS = 17
const R_MIPS_SUB R_MIPS = 24
const R_MIPS_TLS_DTPMOD32 R_MIPS = 38
const R_MIPS_TLS_DTPMOD64 R_MIPS = 40
const R_MIPS_TLS_DTPREL32 R_MIPS = 39
const R_MIPS_TLS_DTPREL64 R_MIPS = 41
const R_MIPS_TLS_DTPREL_HI16 R_MIPS = 44
const R_MIPS_TLS_DTPREL_LO16 R_MIPS = 45
const R_MIPS_TLS_GD R_MIPS = 42
const R_MIPS_TLS_GOTTPREL R_MIPS = 46
const R_MIPS_TLS_LDM R_MIPS = 43
const R_MIPS_TLS_TPREL32 R_MIPS = 47
const R_MIPS_TLS_TPREL64 R_MIPS = 48
const R_MIPS_TLS_TPREL_HI16 R_MIPS = 49
const R_MIPS_TLS_TPREL_LO16 R_MIPS = 50
const R_PPC64_ADDR14 R_PPC64 = 7
const R_PPC64_ADDR14_BRNTAKEN R_PPC64 = 9
const R_PPC64_ADDR14_BRTAKEN R_PPC64 = 8
const R_PPC64_ADDR16 R_PPC64 = 3
const R_PPC64_ADDR16_DS R_PPC64 = 56
const R_PPC64_ADDR16_HA R_PPC64 = 6
const R_PPC64_ADDR16_HI R_PPC64 = 5
const R_PPC64_ADDR16_HIGH R_PPC64 = 110
const R_PPC64_ADDR16_HIGHA R_PPC64 = 111
const R_PPC64_ADDR16_HIGHER R_PPC64 = 39
const R_PPC64_ADDR16_HIGHER34 R_PPC64 = 136
const R_PPC64_ADDR16_HIGHERA R_PPC64 = 40
const R_PPC64_ADDR16_HIGHERA34 R_PPC64 = 137
const R_PPC64_ADDR16_HIGHEST R_PPC64 = 41
const R_PPC64_ADDR16_HIGHEST34 R_PPC64 = 138
const R_PPC64_ADDR16_HIGHESTA R_PPC64 = 42
const R_PPC64_ADDR16_HIGHESTA34 R_PPC64 = 139
const R_PPC64_ADDR16_LO R_PPC64 = 4
const R_PPC64_ADDR16_LO_DS R_PPC64 = 57
const R_PPC64_ADDR24 R_PPC64 = 2
const R_PPC64_ADDR32 R_PPC64 = 1
const R_PPC64_ADDR64 R_PPC64 = 38
const R_PPC64_ADDR64_LOCAL R_PPC64 = 117
const R_PPC64_COPY R_PPC64 = 19
const R_PPC64_D28 R_PPC64 = 144
const R_PPC64_D34 R_PPC64 = 128
const R_PPC64_D34_HA30 R_PPC64 = 131
const R_PPC64_D34_HI30 R_PPC64 = 130
const R_PPC64_D34_LO R_PPC64 = 129
const R_PPC64_DTPMOD64 R_PPC64 = 68
const R_PPC64_DTPREL16 R_PPC64 = 74
const R_PPC64_DTPREL16_DS R_PPC64 = 101
const R_PPC64_DTPREL16_HA R_PPC64 = 77
const R_PPC64_DTPREL16_HI R_PPC64 = 76
const R_PPC64_DTPREL16_HIGH R_PPC64 = 114
const R_PPC64_DTPREL16_HIGHA R_PPC64 = 115
const R_PPC64_DTPREL16_HIGHER R_PPC64 = 103
const R_PPC64_DTPREL16_HIGHERA R_PPC64 = 104
const R_PPC64_DTPREL16_HIGHEST R_PPC64 = 105
const R_PPC64_DTPREL16_HIGHESTA R_PPC64 = 106
const R_PPC64_DTPREL16_LO R_PPC64 = 75
const R_PPC64_DTPREL16_LO_DS R_PPC64 = 102
const R_PPC64_DTPREL34 R_PPC64 = 147
const R_PPC64_DTPREL64 R_PPC64 = 78
const R_PPC64_ENTRY R_PPC64 = 118
const R_PPC64_GLOB_DAT R_PPC64 = 20
const R_PPC64_GNU_VTENTRY R_PPC64 = 254
const R_PPC64_GNU_VTINHERIT R_PPC64 = 253
const R_PPC64_GOT16 R_PPC64 = 14
const R_PPC64_GOT16_DS R_PPC64 = 58
const R_PPC64_GOT16_HA R_PPC64 = 17
const R_PPC64_GOT16_HI R_PPC64 = 16
const R_PPC64_GOT16_LO R_PPC64 = 15
const R_PPC64_GOT16_LO_DS R_PPC64 = 59
const R_PPC64_GOT_DTPREL16_DS R_PPC64 = 91
const R_PPC64_GOT_DTPREL16_HA R_PPC64 = 94
const R_PPC64_GOT_DTPREL16_HI R_PPC64 = 93
const R_PPC64_GOT_DTPREL16_LO_DS R_PPC64 = 92
const R_PPC64_GOT_DTPREL_PCREL34 R_PPC64 = 151
const R_PPC64_GOT_PCREL34 R_PPC64 = 133
const R_PPC64_GOT_TLSGD16 R_PPC64 = 79
const R_PPC64_GOT_TLSGD16_HA R_PPC64 = 82
const R_PPC64_GOT_TLSGD16_HI R_PPC64 = 81
const R_PPC64_GOT_TLSGD16_LO R_PPC64 = 80
const R_PPC64_GOT_TLSGD_PCREL34 R_PPC64 = 148
const R_PPC64_GOT_TLSLD16 R_PPC64 = 83
const R_PPC64_GOT_TLSLD16_HA R_PPC64 = 86
const R_PPC64_GOT_TLSLD16_HI R_PPC64 = 85
const R_PPC64_GOT_TLSLD16_LO R_PPC64 = 84
const R_PPC64_GOT_TLSLD_PCREL34 R_PPC64 = 149
const R_PPC64_GOT_TPREL16_DS R_PPC64 = 87
const R_PPC64_GOT_TPREL16_HA R_PPC64 = 90
const R_PPC64_GOT_TPREL16_HI R_PPC64 = 89
const R_PPC64_GOT_TPREL16_LO_DS R_PPC64 = 88
const R_PPC64_GOT_TPREL_PCREL34 R_PPC64 = 150
const R_PPC64_IRELATIVE R_PPC64 = 248
const R_PPC64_JMP_IREL R_PPC64 = 247
const R_PPC64_JMP_SLOT R_PPC64 = 21
const R_PPC64_NONE R_PPC64 = 0
const R_PPC64_PCREL28 R_PPC64 = 145
const R_PPC64_PCREL34 R_PPC64 = 132
const R_PPC64_PCREL_OPT R_PPC64 = 123
const R_PPC64_PLT16_HA R_PPC64 = 31
const R_PPC64_PLT16_HI R_PPC64 = 30
const R_PPC64_PLT16_LO R_PPC64 = 29
const R_PPC64_PLT16_LO_DS R_PPC64 = 60
const R_PPC64_PLT32 R_PPC64 = 27
const R_PPC64_PLT64 R_PPC64 = 45
const R_PPC64_PLTCALL R_PPC64 = 120
const R_PPC64_PLTCALL_NOTOC R_PPC64 = 122
const R_PPC64_PLTGOT16 R_PPC64 = 52
const R_PPC64_PLTGOT16_DS R_PPC64 = 65
const R_PPC64_PLTGOT16_HA R_PPC64 = 55
const R_PPC64_PLTGOT16_HI R_PPC64 = 54
const R_PPC64_PLTGOT16_LO R_PPC64 = 53
const R_PPC64_PLTGOT_LO_DS R_PPC64 = 66
const R_PPC64_PLTREL32 R_PPC64 = 28
const R_PPC64_PLTREL64 R_PPC64 = 46
const R_PPC64_PLTSEQ R_PPC64 = 119
const R_PPC64_PLTSEQ_NOTOC R_PPC64 = 121
const R_PPC64_PLT_PCREL34 R_PPC64 = 134
const R_PPC64_PLT_PCREL34_NOTOC R_PPC64 = 135
const R_PPC64_REL14 R_PPC64 = 11
const R_PPC64_REL14_BRNTAKEN R_PPC64 = 13
const R_PPC64_REL14_BRTAKEN R_PPC64 = 12
const R_PPC64_REL16 R_PPC64 = 249
const R_PPC64_REL16DX_HA R_PPC64 = 246
const R_PPC64_REL16_HA R_PPC64 = 252
const R_PPC64_REL16_HI R_PPC64 = 251
const R_PPC64_REL16_HIGH R_PPC64 = 240
const R_PPC64_REL16_HIGHA R_PPC64 = 241
const R_PPC64_REL16_HIGHER R_PPC64 = 242
const R_PPC64_REL16_HIGHER34 R_PPC64 = 140
const R_PPC64_REL16_HIGHERA R_PPC64 = 243
const R_PPC64_REL16_HIGHERA34 R_PPC64 = 141
const R_PPC64_REL16_HIGHEST R_PPC64 = 244
const R_PPC64_REL16_HIGHEST34 R_PPC64 = 142
const R_PPC64_REL16_HIGHESTA R_PPC64 = 245
const R_PPC64_REL16_HIGHESTA34 R_PPC64 = 143
const R_PPC64_REL16_LO R_PPC64 = 250
const R_PPC64_REL24 R_PPC64 = 10
const R_PPC64_REL24_NOTOC R_PPC64 = 116
const R_PPC64_REL24_P9NOTOC R_PPC64 = 124
const R_PPC64_REL30 R_PPC64 = 37
const R_PPC64_REL32 R_PPC64 = 26
const R_PPC64_REL64 R_PPC64 = 44
const R_PPC64_RELATIVE R_PPC64 = 22
const R_PPC64_SECTOFF R_PPC64 = 33
const R_PPC64_SECTOFF_DS R_PPC64 = 61
const R_PPC64_SECTOFF_HA R_PPC64 = 36
const R_PPC64_SECTOFF_HI R_PPC64 = 35
const R_PPC64_SECTOFF_LO R_PPC64 = 34
const R_PPC64_SECTOFF_LO_DS R_PPC64 = 62
const R_PPC64_TLS R_PPC64 = 67
const R_PPC64_TLSGD R_PPC64 = 107
const R_PPC64_TLSLD R_PPC64 = 108
const R_PPC64_TOC R_PPC64 = 51
const R_PPC64_TOC16 R_PPC64 = 47
const R_PPC64_TOC16_DS R_PPC64 = 63
const R_PPC64_TOC16_HA R_PPC64 = 50
const R_PPC64_TOC16_HI R_PPC64 = 49
const R_PPC64_TOC16_LO R_PPC64 = 48
const R_PPC64_TOC16_LO_DS R_PPC64 = 64
const R_PPC64_TOCSAVE R_PPC64 = 109
const R_PPC64_TPREL16 R_PPC64 = 69
const R_PPC64_TPREL16_DS R_PPC64 = 95
const R_PPC64_TPREL16_HA R_PPC64 = 72
const R_PPC64_TPREL16_HI R_PPC64 = 71
const R_PPC64_TPREL16_HIGH R_PPC64 = 112
const R_PPC64_TPREL16_HIGHA R_PPC64 = 113
const R_PPC64_TPREL16_HIGHER R_PPC64 = 97
const R_PPC64_TPREL16_HIGHERA R_PPC64 = 98
const R_PPC64_TPREL16_HIGHEST R_PPC64 = 99
const R_PPC64_TPREL16_HIGHESTA R_PPC64 = 100
const R_PPC64_TPREL16_LO R_PPC64 = 70
const R_PPC64_TPREL16_LO_DS R_PPC64 = 96
const R_PPC64_TPREL34 R_PPC64 = 146
const R_PPC64_TPREL64 R_PPC64 = 73
const R_PPC64_UADDR16 R_PPC64 = 25
const R_PPC64_UADDR32 R_PPC64 = 24
const R_PPC64_UADDR64 R_PPC64 = 43
const R_PPC_ADDR14 R_PPC = 7
const R_PPC_ADDR14_BRNTAKEN R_PPC = 9
const R_PPC_ADDR14_BRTAKEN R_PPC = 8
const R_PPC_ADDR16 R_PPC = 3
const R_PPC_ADDR16_HA R_PPC = 6
const R_PPC_ADDR16_HI R_PPC = 5
const R_PPC_ADDR16_LO R_PPC = 4
const R_PPC_ADDR24 R_PPC = 2
const R_PPC_ADDR32 R_PPC = 1
const R_PPC_COPY R_PPC = 19
const R_PPC_DTPMOD32 R_PPC = 68
const R_PPC_DTPREL16 R_PPC = 74
const R_PPC_DTPREL16_HA R_PPC = 77
const R_PPC_DTPREL16_HI R_PPC = 76
const R_PPC_DTPREL16_LO R_PPC = 75
const R_PPC_DTPREL32 R_PPC = 78
const R_PPC_EMB_BIT_FLD R_PPC = 115
const R_PPC_EMB_MRKREF R_PPC = 110
const R_PPC_EMB_NADDR16 R_PPC = 102
const R_PPC_EMB_NADDR16_HA R_PPC = 105
const R_PPC_EMB_NADDR16_HI R_PPC = 104
const R_PPC_EMB_NADDR16_LO R_PPC = 103
const R_PPC_EMB_NADDR32 R_PPC = 101
const R_PPC_EMB_RELSDA R_PPC = 116
const R_PPC_EMB_RELSEC16 R_PPC = 111
const R_PPC_EMB_RELST_HA R_PPC = 114
const R_PPC_EMB_RELST_HI R_PPC = 113
const R_PPC_EMB_RELST_LO R_PPC = 112
const R_PPC_EMB_SDA21 R_PPC = 109
const R_PPC_EMB_SDA2I16 R_PPC = 107
const R_PPC_EMB_SDA2REL R_PPC = 108
const R_PPC_EMB_SDAI16 R_PPC = 106
const R_PPC_GLOB_DAT R_PPC = 20
const R_PPC_GOT16 R_PPC = 14
const R_PPC_GOT16_HA R_PPC = 17
const R_PPC_GOT16_HI R_PPC = 16
const R_PPC_GOT16_LO R_PPC = 15
const R_PPC_GOT_TLSGD16 R_PPC = 79
const R_PPC_GOT_TLSGD16_HA R_PPC = 82
const R_PPC_GOT_TLSGD16_HI R_PPC = 81
const R_PPC_GOT_TLSGD16_LO R_PPC = 80
const R_PPC_GOT_TLSLD16 R_PPC = 83
const R_PPC_GOT_TLSLD16_HA R_PPC = 86
const R_PPC_GOT_TLSLD16_HI R_PPC = 85
const R_PPC_GOT_TLSLD16_LO R_PPC = 84
const R_PPC_GOT_TPREL16 R_PPC = 87
const R_PPC_GOT_TPREL16_HA R_PPC = 90
const R_PPC_GOT_TPREL16_HI R_PPC = 89
const R_PPC_GOT_TPREL16_LO R_PPC = 88
const R_PPC_JMP_SLOT R_PPC = 21
const R_PPC_LOCAL24PC R_PPC = 23
const R_PPC_NONE R_PPC = 0
const R_PPC_PLT16_HA R_PPC = 31
const R_PPC_PLT16_HI R_PPC = 30
const R_PPC_PLT16_LO R_PPC = 29
const R_PPC_PLT32 R_PPC = 27
const R_PPC_PLTREL24 R_PPC = 18
const R_PPC_PLTREL32 R_PPC = 28
const R_PPC_REL14 R_PPC = 11
const R_PPC_REL14_BRNTAKEN R_PPC = 13
const R_PPC_REL14_BRTAKEN R_PPC = 12
const R_PPC_REL24 R_PPC = 10
const R_PPC_REL32 R_PPC = 26
const R_PPC_RELATIVE R_PPC = 22
const R_PPC_SDAREL16 R_PPC = 32
const R_PPC_SECTOFF R_PPC = 33
const R_PPC_SECTOFF_HA R_PPC = 36
const R_PPC_SECTOFF_HI R_PPC = 35
const R_PPC_SECTOFF_LO R_PPC = 34
const R_PPC_TLS R_PPC = 67
const R_PPC_TPREL16 R_PPC = 69
const R_PPC_TPREL16_HA R_PPC = 72
const R_PPC_TPREL16_HI R_PPC = 71
const R_PPC_TPREL16_LO R_PPC = 70
const R_PPC_TPREL32 R_PPC = 73
const R_PPC_UADDR16 R_PPC = 25
const R_PPC_UADDR32 R_PPC = 24
const R_RISCV_32 R_RISCV = 1
const R_RISCV_32_PCREL R_RISCV = 57
const R_RISCV_64 R_RISCV = 2
const R_RISCV_ADD16 R_RISCV = 34
const R_RISCV_ADD32 R_RISCV = 35
const R_RISCV_ADD64 R_RISCV = 36
const R_RISCV_ADD8 R_RISCV = 33
const R_RISCV_ALIGN R_RISCV = 43
const R_RISCV_BRANCH R_RISCV = 16
const R_RISCV_CALL R_RISCV = 18
const R_RISCV_CALL_PLT R_RISCV = 19
const R_RISCV_COPY R_RISCV = 4
const R_RISCV_GNU_VTENTRY R_RISCV = 42
const R_RISCV_GNU_VTINHERIT R_RISCV = 41
const R_RISCV_GOT_HI20 R_RISCV = 20
const R_RISCV_GPREL_I R_RISCV = 47
const R_RISCV_GPREL_S R_RISCV = 48
const R_RISCV_HI20 R_RISCV = 26
const R_RISCV_JAL R_RISCV = 17
const R_RISCV_JUMP_SLOT R_RISCV = 5
const R_RISCV_LO12_I R_RISCV = 27
const R_RISCV_LO12_S R_RISCV = 28
const R_RISCV_NONE R_RISCV = 0
const R_RISCV_PCREL_HI20 R_RISCV = 23
const R_RISCV_PCREL_LO12_I R_RISCV = 24
const R_RISCV_PCREL_LO12_S R_RISCV = 25
const R_RISCV_RELATIVE R_RISCV = 3
const R_RISCV_RELAX R_RISCV = 51
const R_RISCV_RVC_BRANCH R_RISCV = 44
const R_RISCV_RVC_JUMP R_RISCV = 45
const R_RISCV_RVC_LUI R_RISCV = 46
const R_RISCV_SET16 R_RISCV = 55
const R_RISCV_SET32 R_RISCV = 56
const R_RISCV_SET6 R_RISCV = 53
const R_RISCV_SET8 R_RISCV = 54
const R_RISCV_SUB16 R_RISCV = 38
const R_RISCV_SUB32 R_RISCV = 39
const R_RISCV_SUB6 R_RISCV = 52
const R_RISCV_SUB64 R_RISCV = 40
const R_RISCV_SUB8 R_RISCV = 37
const R_RISCV_TLS_DTPMOD32 R_RISCV = 6
const R_RISCV_TLS_DTPMOD64 R_RISCV = 7
const R_RISCV_TLS_DTPREL32 R_RISCV = 8
const R_RISCV_TLS_DTPREL64 R_RISCV = 9
const R_RISCV_TLS_GD_HI20 R_RISCV = 22
const R_RISCV_TLS_GOT_HI20 R_RISCV = 21
const R_RISCV_TLS_TPREL32 R_RISCV = 10
const R_RISCV_TLS_TPREL64 R_RISCV = 11
const R_RISCV_TPREL_ADD R_RISCV = 32
const R_RISCV_TPREL_HI20 R_RISCV = 29
const R_RISCV_TPREL_I R_RISCV = 49
const R_RISCV_TPREL_LO12_I R_RISCV = 30
const R_RISCV_TPREL_LO12_S R_RISCV = 31
const R_RISCV_TPREL_S R_RISCV = 50
const R_SPARC_10 R_SPARC = 30
const R_SPARC_11 R_SPARC = 31
const R_SPARC_13 R_SPARC = 11
const R_SPARC_16 R_SPARC = 2
const R_SPARC_22 R_SPARC = 10
const R_SPARC_32 R_SPARC = 3
const R_SPARC_5 R_SPARC = 44
const R_SPARC_6 R_SPARC = 45
const R_SPARC_64 R_SPARC = 32
const R_SPARC_7 R_SPARC = 43
const R_SPARC_8 R_SPARC = 1
const R_SPARC_COPY R_SPARC = 19
const R_SPARC_DISP16 R_SPARC = 5
const R_SPARC_DISP32 R_SPARC = 6
const R_SPARC_DISP64 R_SPARC = 46
const R_SPARC_DISP8 R_SPARC = 4
const R_SPARC_GLOB_DAT R_SPARC = 20
const R_SPARC_GLOB_JMP R_SPARC = 42
const R_SPARC_GOT10 R_SPARC = 13
const R_SPARC_GOT13 R_SPARC = 14
const R_SPARC_GOT22 R_SPARC = 15
const R_SPARC_H44 R_SPARC = 50
const R_SPARC_HH22 R_SPARC = 34
const R_SPARC_HI22 R_SPARC = 9
const R_SPARC_HIPLT22 R_SPARC = 25
const R_SPARC_HIX22 R_SPARC = 48
const R_SPARC_HM10 R_SPARC = 35
const R_SPARC_JMP_SLOT R_SPARC = 21
const R_SPARC_L44 R_SPARC = 52
const R_SPARC_LM22 R_SPARC = 36
const R_SPARC_LO10 R_SPARC = 12
const R_SPARC_LOPLT10 R_SPARC = 26
const R_SPARC_LOX10 R_SPARC = 49
const R_SPARC_M44 R_SPARC = 51
const R_SPARC_NONE R_SPARC = 0
const R_SPARC_OLO10 R_SPARC = 33
const R_SPARC_PC10 R_SPARC = 16
const R_SPARC_PC22 R_SPARC = 17
const R_SPARC_PCPLT10 R_SPARC = 29
const R_SPARC_PCPLT22 R_SPARC = 28
const R_SPARC_PCPLT32 R_SPARC = 27
const R_SPARC_PC_HH22 R_SPARC = 37
const R_SPARC_PC_HM10 R_SPARC = 38
const R_SPARC_PC_LM22 R_SPARC = 39
const R_SPARC_PLT32 R_SPARC = 24
const R_SPARC_PLT64 R_SPARC = 47
const R_SPARC_REGISTER R_SPARC = 53
const R_SPARC_RELATIVE R_SPARC = 22
const R_SPARC_UA16 R_SPARC = 55
const R_SPARC_UA32 R_SPARC = 23
const R_SPARC_UA64 R_SPARC = 54
const R_SPARC_WDISP16 R_SPARC = 40
const R_SPARC_WDISP19 R_SPARC = 41
const R_SPARC_WDISP22 R_SPARC = 8
const R_SPARC_WDISP30 R_SPARC = 7
const R_SPARC_WPLT30 R_SPARC = 18
const R_X86_64_16 R_X86_64 = 12
const R_X86_64_32 R_X86_64 = 10
const R_X86_64_32S R_X86_64 = 11
const R_X86_64_64 R_X86_64 = 1
const R_X86_64_8 R_X86_64 = 14
const R_X86_64_COPY R_X86_64 = 5
const R_X86_64_DTPMOD64 R_X86_64 = 16
const R_X86_64_DTPOFF32 R_X86_64 = 21
const R_X86_64_DTPOFF64 R_X86_64 = 17
const R_X86_64_GLOB_DAT R_X86_64 = 6
const R_X86_64_GOT32 R_X86_64 = 3
const R_X86_64_GOT64 R_X86_64 = 27
const R_X86_64_GOTOFF64 R_X86_64 = 25
const R_X86_64_GOTPC32 R_X86_64 = 26
const R_X86_64_GOTPC32_TLSDESC R_X86_64 = 34
const R_X86_64_GOTPC64 R_X86_64 = 29
const R_X86_64_GOTPCREL R_X86_64 = 9
const R_X86_64_GOTPCREL64 R_X86_64 = 28
const R_X86_64_GOTPCRELX R_X86_64 = 41
const R_X86_64_GOTPLT64 R_X86_64 = 30
const R_X86_64_GOTTPOFF R_X86_64 = 22
const R_X86_64_IRELATIVE R_X86_64 = 37
const R_X86_64_JMP_SLOT R_X86_64 = 7
const R_X86_64_NONE R_X86_64 = 0
const R_X86_64_PC16 R_X86_64 = 13
const R_X86_64_PC32 R_X86_64 = 2
const R_X86_64_PC32_BND R_X86_64 = 39
const R_X86_64_PC64 R_X86_64 = 24
const R_X86_64_PC8 R_X86_64 = 15
const R_X86_64_PLT32 R_X86_64 = 4
const R_X86_64_PLT32_BND R_X86_64 = 40
const R_X86_64_PLTOFF64 R_X86_64 = 31
const R_X86_64_RELATIVE R_X86_64 = 8
const R_X86_64_RELATIVE64 R_X86_64 = 38
const R_X86_64_REX_GOTPCRELX R_X86_64 = 42
const R_X86_64_SIZE32 R_X86_64 = 32
const R_X86_64_SIZE64 R_X86_64 = 33
const R_X86_64_TLSDESC R_X86_64 = 36
const R_X86_64_TLSDESC_CALL R_X86_64 = 35
const R_X86_64_TLSGD R_X86_64 = 19
const R_X86_64_TLSLD R_X86_64 = 20
const R_X86_64_TPOFF32 R_X86_64 = 23
const R_X86_64_TPOFF64 R_X86_64 = 18
const SHF_ALLOC SectionFlag = 0x2
const SHF_COMPRESSED SectionFlag = 0x800
const SHF_EXECINSTR SectionFlag = 0x4
const SHF_GROUP SectionFlag = 0x200
const SHF_INFO_LINK SectionFlag = 0x40
const SHF_LINK_ORDER SectionFlag = 0x80
const SHF_MASKOS SectionFlag = 0x0ff00000
const SHF_MASKPROC SectionFlag = 0xf0000000
const SHF_MERGE SectionFlag = 0x10
const SHF_OS_NONCONFORMING SectionFlag = 0x100
const SHF_STRINGS SectionFlag = 0x20
const SHF_TLS SectionFlag = 0x400
const SHF_WRITE SectionFlag = 0x1
const SHN_ABS SectionIndex = 0xfff1
const SHN_COMMON SectionIndex = 0xfff2
const SHN_HIOS SectionIndex = 0xff3f
const SHN_HIPROC SectionIndex = 0xff1f
const SHN_HIRESERVE SectionIndex = 0xffff
const SHN_LOOS SectionIndex = 0xff20
const SHN_LOPROC SectionIndex = 0xff00
const SHN_LORESERVE SectionIndex = 0xff00
const SHN_UNDEF SectionIndex = 0
const SHN_XINDEX SectionIndex = 0xffff
const SHT_DYNAMIC SectionType = 6
const SHT_DYNSYM SectionType = 11
const SHT_FINI_ARRAY SectionType = 15
const SHT_GNU_ATTRIBUTES SectionType = 0x6ffffff5
const SHT_GNU_HASH SectionType = 0x6ffffff6
const SHT_GNU_LIBLIST SectionType = 0x6ffffff7
const SHT_GNU_VERDEF SectionType = 0x6ffffffd
const SHT_GNU_VERNEED SectionType = 0x6ffffffe
const SHT_GNU_VERSYM SectionType = 0x6fffffff
const SHT_GROUP SectionType = 17
const SHT_HASH SectionType = 5
const SHT_HIOS SectionType = 0x6fffffff
const SHT_HIPROC SectionType = 0x7fffffff
const SHT_HIUSER SectionType = 0xffffffff
const SHT_INIT_ARRAY SectionType = 14
const SHT_LOOS SectionType = 0x60000000
const SHT_LOPROC SectionType = 0x70000000
const SHT_LOUSER SectionType = 0x80000000
const SHT_MIPS_ABIFLAGS SectionType = 0x7000002a
const SHT_NOBITS SectionType = 8
const SHT_NOTE SectionType = 7
const SHT_NULL SectionType = 0
const SHT_PREINIT_ARRAY SectionType = 16
const SHT_PROGBITS SectionType = 1
const SHT_REL SectionType = 9
const SHT_RELA SectionType = 4
const SHT_SHLIB SectionType = 10
const SHT_STRTAB SectionType = 3
const SHT_SYMTAB SectionType = 2
const SHT_SYMTAB_SHNDX SectionType = 18
const STB_GLOBAL SymBind = 1
const STB_HIOS SymBind = 12
const STB_HIPROC SymBind = 15
const STB_LOCAL SymBind = 0
const STB_LOOS SymBind = 10
const STB_LOPROC SymBind = 13
const STB_WEAK SymBind = 2
const STT_COMMON SymType = 5
const STT_FILE SymType = 4
const STT_FUNC SymType = 2
const STT_GNU_IFUNC SymType = 10
const STT_HIOS SymType = 12
const STT_HIPROC SymType = 15
const STT_LOOS SymType = 10
const STT_LOPROC SymType = 13
const STT_NOTYPE SymType = 0
const STT_OBJECT SymType = 1
Non-standard symbol types.
const STT_RELC SymType = 8
const STT_SECTION SymType = 3
const STT_SRELC SymType = 9
const STT_TLS SymType = 6
const STV_DEFAULT SymVis = 0x0
const STV_HIDDEN SymVis = 0x2
const STV_INTERNAL SymVis = 0x1
const STV_PROTECTED SymVis = 0x3
const Sym32Size = 16
const Sym64Size = 24
const VER_FLG_BASE DynamicVersionFlag = 0x1
const VER_FLG_INFO DynamicVersionFlag = 0x4
const VER_FLG_WEAK DynamicVersionFlag = 0x2
var classStrings = []intName{...}
var compressionStrings = []intName{...}
var dataStrings = []intName{...}
var dflag1Strings = []intName{...}
var dflagStrings = []intName{...}
var dtStrings = []intName{...}
var machineStrings = []intName{...}
var ntypeStrings = []intName{...}
var osabiStrings = []intName{...}
var pfStrings = []intName{...}
var ptStrings = []intName{...}
var r386Strings = []intName{...}
var r390Strings = []intName{...}
var raarch64Strings = []intName{...}
var ralphaStrings = []intName{...}
var rarmStrings = []intName{...}
var rlarchStrings = []intName{...}
var rmipsStrings = []intName{...}
var rppc64Strings = []intName{...}
var rppcStrings = []intName{...}
var rriscvStrings = []intName{...}
var rsparcStrings = []intName{...}
var rx86_64Strings = []intName{...}
var shfStrings = []intName{...}
var shnStrings = []intName{...}
var shtStrings = []intName{...}
var stbStrings = []intName{...}
var sttStrings = []intName{...}
var stvStrings = []intName{...}
var typeStrings = []intName{...}
var versionStrings = []intName{...}
Class is found in Header.Ident[EI_CLASS] and Header.Class.
type Class byte
Section compression type.
type CompressionType int
Data is found in Header.Ident[EI_DATA] and Header.Data.
type Data byte
DT_FLAGS values.
type DynFlag int
DT_FLAGS_1 values.
type DynFlag1 uint32
Dyn.Tag
type DynTag int
Dynamic version flags.
type DynamicVersionFlag uint16
Machine is found in Header.Machine.
type Machine uint16
NType values; used in core files.
type NType int
OSABI is found in Header.Ident[EI_OSABI] and Header.OSABI.
type OSABI byte
Prog.Flag
type ProgFlag uint32
Prog.Type
type ProgType int
Relocation types for 386.
type R_386 int
Relocation types for s390x processors.
type R_390 int
Relocation types for AArch64 (aka arm64)
type R_AARCH64 int
Relocation types for Alpha.
type R_ALPHA int
Relocation types for ARM.
type R_ARM int
Relocation types for LoongArch.
type R_LARCH int
Relocation types for MIPS.
type R_MIPS int
Relocation types for PowerPC. Values that are shared by both R_PPC and R_PPC64 are prefixed with R_POWERPC_ in the ELF standard. For the R_PPC type, the relevant shared relocations have been renamed with the prefix R_PPC_. The original name follows the value in a comment.
type R_PPC int
Relocation types for 64-bit PowerPC or Power Architecture processors. Values that are shared by both R_PPC and R_PPC64 are prefixed with R_POWERPC_ in the ELF standard. For the R_PPC64 type, the relevant shared relocations have been renamed with the prefix R_PPC64_. The original name follows the value in a comment.
type R_PPC64 int
Relocation types for RISC-V processors.
type R_RISCV int
Relocation types for SPARC.
type R_SPARC int
Relocation types for x86-64.
type R_X86_64 int
Section flags.
type SectionFlag uint32
Special section indices.
type SectionIndex int
Section type.
type SectionType uint32
Symbol Binding - ELFNN_ST_BIND - st_info
type SymBind int
Symbol type - ELFNN_ST_TYPE - st_info
type SymType int
Symbol visibility - ELFNN_ST_VISIBILITY - st_other
type SymVis int
Type is found in Header.Type.
type Type uint16
Version is found in Header.Ident[EI_VERSION] and Header.Version.
type Version byte
VersionIndex is the type of a [Symbol] version index.
type VersionIndex uint16
ELF32 Compression header.
type Chdr32 struct {
Type uint32
Size uint32
Addralign uint32
}
ELF64 Compression header.
type Chdr64 struct {
Type uint32
_ uint32
Size uint64
Addralign uint64
}
ELF32 Dynamic structure. The ".dynamic" section contains an array of them.
type Dyn32 struct {
Tag int32
Val uint32
}
ELF64 Dynamic structure. The ".dynamic" section contains an array of them.
type Dyn64 struct {
Tag int64
Val uint64
}
DynamicVersion is a version defined by a dynamic object. This describes entries in the ELF SHT_GNU_verdef section. We assume that the vd_version field is 1. Note that the name of the version appears here; it is not in the first Deps entry as it is in the ELF file.
type DynamicVersion struct {
Name string
Index uint16
Flags DynamicVersionFlag
Deps []string
}
DynamicVersionDep is a version needed from some shared library.
type DynamicVersionDep struct {
Flags DynamicVersionFlag
Index uint16
Dep string
}
DynamicVersionNeed describes a shared library needed by a dynamic object, with a list of the versions needed from that shared library. This describes entries in the ELF SHT_GNU_verneed section. We assume that the vn_version field is 1.
type DynamicVersionNeed struct {
Name string
Needs []DynamicVersionDep
}
A File represents an open ELF file.
type File struct {
FileHeader
Sections []*Section
Progs []*Prog
closer io.Closer
dynVers []DynamicVersion
dynVerNeeds []DynamicVersionNeed
gnuVersym []byte
}
A FileHeader represents an ELF file header.
type FileHeader struct {
Class Class
Data Data
Version Version
OSABI OSABI
ABIVersion uint8
ByteOrder binary.ByteOrder
Type Type
Machine Machine
Entry uint64
}
type FormatError struct {
off int64
msg string
val any
}
ELF32 File header.
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
}
ELF64 file header.
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 ImportedSymbol struct {
Name string
Version string
Library string
}
A Prog represents a single ELF program header in an ELF binary.
type Prog struct {
ProgHeader
io.ReaderAt
sr *io.SectionReader
}
ELF32 Program header.
type Prog32 struct {
Type uint32
Off uint32
Vaddr uint32
Paddr uint32
Filesz uint32
Memsz uint32
Flags uint32
Align uint32
}
ELF64 Program header.
type Prog64 struct {
Type uint32
Flags uint32
Off uint64
Vaddr uint64
Paddr uint64
Filesz uint64
Memsz uint64
Align uint64
}
A ProgHeader represents a single ELF program header.
type ProgHeader struct {
Type ProgType
Flags ProgFlag
Off uint64
Vaddr uint64
Paddr uint64
Filesz uint64
Memsz uint64
Align uint64
}
ELF32 Relocations that don't need an addend field.
type Rel32 struct {
Off uint32
Info uint32
}
ELF64 relocations that don't need an addend field.
type Rel64 struct {
Off uint64
Info uint64
}
ELF32 Relocations that need an addend field.
type Rela32 struct {
Off uint32
Info uint32
Addend int32
}
ELF64 relocations that need an addend field.
type Rela64 struct {
Off uint64
Info uint64
Addend int64
}
A Section represents a single section in an ELF file.
type Section struct {
SectionHeader
io.ReaderAt
sr *io.SectionReader
compressionType CompressionType
compressionOffset int64
}
ELF32 Section header.
type Section32 struct {
Name uint32
Type uint32
Flags uint32
Addr uint32
Off uint32
Size uint32
Link uint32
Info uint32
Addralign uint32
Entsize uint32
}
ELF64 Section header.
type Section64 struct {
Name uint32
Type uint32
Flags uint64
Addr uint64
Off uint64
Size uint64
Link uint32
Info uint32
Addralign uint64
Entsize uint64
}
A SectionHeader represents a single ELF section header.
type SectionHeader struct {
Name string
Type SectionType
Flags SectionFlag
Addr uint64
Offset uint64
Size uint64
Link uint32
Info uint32
Addralign uint64
Entsize uint64
FileSize uint64
}
ELF32 Symbol.
type Sym32 struct {
Name uint32
Value uint32
Size uint32
Info uint8
Other uint8
Shndx uint16
}
ELF64 symbol table entries.
type Sym64 struct {
Name uint32
Info uint8
Other uint8
Shndx uint16
Value uint64
Size uint64
}
A Symbol represents an entry in an ELF symbol table section.
type Symbol struct {
Name string
Info byte
Other byte
HasVersion bool
VersionIndex VersionIndex
Section SectionIndex
Value uint64
Size uint64
Version string
Library string
}
errorReader returns error from all operations.
type errorReader struct {
error
}
type intName struct {
i uint32
s string
}
type nobitsSectionReader struct {
}
readSeekerFromReader converts an io.Reader into an io.ReadSeeker. In general Seek may not be efficient, but it is optimized for common cases such as seeking to the end to find the length of the data.
type readSeekerFromReader struct {
reset func() (io.Reader, error)
r io.Reader
size int64
offset int64
}
Close closes the [File]. If the [File] was created using [NewFile] directly instead of [Open], Close has no effect.
func (f *File) Close() error
func (r errorReader) Close() error
func (f *File) DWARF() (*dwarf.Data, error)
Data reads and returns the contents of the ELF section. Even if the section is stored compressed in the ELF file, Data returns uncompressed data. For an [SHT_NOBITS] section, Data always returns a non-nil error.
func (s *Section) Data() ([]byte, error)
DynString returns the strings listed for the given tag in the file's dynamic section. The tag must be one that takes string values: [DT_NEEDED], [DT_SONAME], [DT_RPATH], or [DT_RUNPATH].
func (f *File) DynString(tag DynTag) ([]string, error)
DynValue returns the values listed for the given tag in the file's dynamic section.
func (f *File) DynValue(tag DynTag) ([]uint64, error)
DynamicSymbols returns the dynamic symbol table for f. The symbols will be listed in the order they appear in f. If f has a symbol version table, the returned [File.Symbols] will have initialized Version and Library fields. For compatibility with [File.Symbols], [File.DynamicSymbols] omits the null symbol at index 0. After retrieving the symbols as symtab, an externally supplied index x corresponds to symtab[x-1], not symtab[x].
func (f *File) DynamicSymbols() ([]Symbol, error)
DynamicVersionNeeds returns version dependencies for a dynamic object.
func (f *File) DynamicVersionNeeds() ([]DynamicVersionNeed, error)
DynamicVersions returns version information for a dynamic object.
func (f *File) DynamicVersions() ([]DynamicVersion, error)
func (e *FormatError) Error() string
func (i NType) GoString() string
func (i R_PPC) GoString() string
func (i R_SPARC) GoString() string
func (i SectionIndex) GoString() string
func (i R_390) GoString() string
func (i SectionType) GoString() string
func (i R_RISCV) GoString() string
func (i SectionFlag) GoString() string
func (i Type) GoString() string
func (i CompressionType) GoString() string
func (i R_PPC64) GoString() string
func (i ProgType) GoString() string
func (i Machine) GoString() string
func (i ProgFlag) GoString() string
func (i OSABI) GoString() string
func (i DynTag) GoString() string
func (i Version) GoString() string
func (i DynFlag) GoString() string
func (i R_LARCH) GoString() string
func (i DynFlag1) GoString() string
func (i R_MIPS) GoString() string
func (i R_386) GoString() string
func (i Data) GoString() string
func (i SymBind) GoString() string
func (i R_ARM) GoString() string
func (i SymType) GoString() string
func (i R_ALPHA) GoString() string
func (i SymVis) GoString() string
func (i Class) GoString() string
func (i R_X86_64) GoString() string
func (i R_AARCH64) GoString() string
ImportedLibraries returns the names of all libraries referred to by the binary f that are expected to be linked with the binary at dynamic link time.
func (f *File) ImportedLibraries() ([]string, error)
ImportedSymbols returns the names of all symbols referred to by the binary f that are expected to be satisfied by other libraries at dynamic load time. It does not return weak symbols.
func (f *File) ImportedSymbols() ([]ImportedSymbol, error)
Index returns the version index. If this is the value 0, it means that the symbol is local, and is not visible externally. If this is the value 1, it means that the symbol is in the base version, and has no specific version; it may or may not match a [DynamicVersion.Index] in the slice returned by [File.DynamicVersions]. Other values will match either [DynamicVersion.Index] in the slice returned by [File.DynamicVersions], or [DynamicVersionDep.Index] in the Needs field of the elements of the slice returned by [File.DynamicVersionNeeds]. In general, a defined symbol will have an index referring to DynamicVersions, and an undefined symbol will have an index referring to some version in DynamicVersionNeeds.
func (vi VersionIndex) Index() uint16
IsHidden reports whether the symbol is hidden within the version. This means that the symbol can only be seen by specifying the exact version.
func (vi VersionIndex) IsHidden() bool
NewFile creates a new [File] for accessing an ELF binary in an underlying reader. The ELF binary is expected to start at position 0 in the ReaderAt.
func NewFile(r io.ReaderAt) (*File, error)
Open opens the named file using [os.Open] and prepares it for use as an ELF binary.
func Open(name string) (*File, error)
Open returns a new ReadSeeker reading the ELF program body.
func (p *Prog) Open() io.ReadSeeker
Open returns a new ReadSeeker reading the ELF section. Even if the section is stored compressed in the ELF file, the ReadSeeker reads uncompressed data. For an [SHT_NOBITS] section, all calls to the opened reader will return a non-nil error.
func (s *Section) Open() io.ReadSeeker
func R_INFO(sym uint32, typ uint32) uint64
func R_INFO32(sym uint32, typ uint32) uint32
func R_SYM32(info uint32) uint32
func R_SYM64(info uint64) uint32
func R_TYPE32(info uint32) uint32
func R_TYPE64(info uint64) uint32
func (r errorReader) Read(p []byte) (n int, err error)
func (r *readSeekerFromReader) Read(p []byte) (n int, err error)
func (r errorReader) ReadAt(p []byte, off int64) (n int, err error)
func (*nobitsSectionReader) ReadAt(p []byte, off int64) (n int, err error)
func ST_BIND(info uint8) SymBind
func ST_INFO(bind SymBind, typ SymType) uint8
func ST_TYPE(info uint8) SymType
func ST_VISIBILITY(other uint8) SymVis
Section returns a section with the given name, or nil if no such section exists.
func (f *File) Section(name string) *Section
SectionByType returns the first section in f with the given type, or nil if there is no such section.
func (f *File) SectionByType(typ SectionType) *Section
func (r errorReader) Seek(offset int64, whence int) (int64, error)
func (r *readSeekerFromReader) Seek(offset int64, whence int) (int64, error)
func (i NType) String() string
func (i ProgFlag) String() string
func (i R_390) String() string
func (i R_RISCV) String() string
func (i R_PPC64) String() string
func (i Class) String() string
func (i Data) String() string
func (i R_PPC) String() string
func (i OSABI) String() string
func (i R_LARCH) String() string
func (i R_MIPS) String() string
func (i R_386) String() string
func (i R_ARM) String() string
func (i R_ALPHA) String() string
func (i R_AARCH64) String() string
func (i R_X86_64) String() string
func (i Type) String() string
func (i Machine) String() string
func (i SectionIndex) String() string
func (i SectionType) String() string
func (i SymVis) String() string
func (i SectionFlag) String() string
func (i CompressionType) String() string
func (i ProgType) String() string
func (i R_SPARC) String() string
func (i DynTag) String() string
func (i DynFlag) String() string
func (i DynFlag1) String() string
func (i Version) String() string
func (i SymBind) String() string
func (i SymType) String() string
Symbols returns the symbol table for f. The symbols will be listed in the order they appear in f. For compatibility with Go 1.0, Symbols omits the null symbol at index 0. After retrieving the symbols as symtab, an externally supplied index x corresponds to symtab[x-1], not symtab[x].
func (f *File) Symbols() ([]Symbol, error)
applyRelocations applies relocations to dst. rels is a relocations section in REL or RELA format.
func (f *File) applyRelocations(dst []byte, rels []byte) error
func (f *File) applyRelocations386(dst []byte, rels []byte) error
func (f *File) applyRelocationsAMD64(dst []byte, rels []byte) error
func (f *File) applyRelocationsARM(dst []byte, rels []byte) error
func (f *File) applyRelocationsARM64(dst []byte, rels []byte) error
func (f *File) applyRelocationsLOONG64(dst []byte, rels []byte) error
func (f *File) applyRelocationsMIPS(dst []byte, rels []byte) error
func (f *File) applyRelocationsMIPS64(dst []byte, rels []byte) error
func (f *File) applyRelocationsPPC(dst []byte, rels []byte) error
func (f *File) applyRelocationsPPC64(dst []byte, rels []byte) error
func (f *File) applyRelocationsRISCV64(dst []byte, rels []byte) error
func (f *File) applyRelocationsSPARC64(dst []byte, rels []byte) error
func (f *File) applyRelocationss390x(dst []byte, rels []byte) error
canApplyRelocation reports whether we should try to apply a relocation to a DWARF data section, given a pointer to the symbol targeted by the relocation. Most relocations in DWARF data tend to be section-relative, but some target non-section symbols (for example, low_PC attrs on subprogram or compilation unit DIEs that target function symbols).
func canApplyRelocation(sym *Symbol) bool
dynamicVersionNeeds returns version dependencies for a dynamic object.
func (f *File) dynamicVersionNeeds(str []byte) error
dynamicVersions returns version information for a dynamic object.
func (f *File) dynamicVersions(str []byte) error
func flagName(i uint32, names []intName, goSyntax bool) string
getString extracts a string from an ELF string table.
func getString(section []byte, start int) (string, bool)
getSymbols returns a slice of Symbols from parsing the symbol table with the given type, along with the associated string table.
func (f *File) getSymbols(typ SectionType) ([]Symbol, []byte, error)
func (f *File) getSymbols32(typ SectionType) ([]Symbol, []byte, error)
func (f *File) getSymbols64(typ SectionType) ([]Symbol, []byte, error)
gnuVersion adds Library and Version information to sym, which came from offset i of the symbol table.
func (f *File) gnuVersion(i int) (hasVersion bool, versionIndex VersionIndex, version string, library string)
gnuVersionInit parses the GNU version tables for use by calls to gnuVersion. It reports whether any version tables were found.
func (f *File) gnuVersionInit(str []byte) (bool, error)
func (r *readSeekerFromReader) start()
func stringName(i uint32, names []intName, goSyntax bool) string
stringTable reads and returns the string table given by the specified link value.
func (f *File) stringTable(link uint32) ([]byte, error)
Generated with Arrow