{"version":3,"file":"elf.mjs","names":["getBuffer","setBuffer","ELFCLASS32","ELFCLASS64","ELFDATA2LSB","ELFDATA2MSB","EM_386","EM_X86_64","PT_NULL","PT_LOAD","PT_DYNAMIC","PT_INTERP","PT_NOTE","PT_SHLIB","PT_PHDR","PT_LOSUNW","PT_SUNWBSS","PT_SUNWSTACK","PT_HISUNW","PT_LOPROC","PT_HIPROC","PF_NONE","PF_EXEC","PF_WRITE","PF_WRITE_EXEC","PF_READ","PF_READ_EXEC","PF_READ_WRITE","PF_READ_WRITE_EXEC","SHT_NULL","SHT_PROGBITS","SHT_SYMTAB","SHT_STRTAB","SHT_RELA","SHT_HASH","SHT_DYNAMIC","SHT_NOTE","SHT_NOBITS","SHT_REL","SHT_SHLIB","SHT_DYNSYM","SHT_SUNW_MOVE","SHT_SUNW_COMDAT","SHT_SUNW_SYMINFO","SHT_SUNW_VERDEF","SHT_SUNW_VERNEED","SHT_SUNW_VERSYM","SHT_LOPROC","SHT_HIPROC","SHT_LOUSER","SHT_HIUSER","SHF_WRITE","SHF_ALLOC","SHF_EXECINSTR","SHF_MASKPROC","EIdent","eiId","Uint8Array","eiClass2","eiData","eiVersion","eiOsabi","eiAbiversion","eiPad","eiNident","Elf32Ehdr","eIdent","eType","eMachine","eVersion","eEntry","ePhoff","eShoff","eFlags","eEhsize","ePhentsize","ePhnum","eShentsize","eShnum","eShtrndx","Elf64Ehdr","Elf32Phdr","pType","pOffset","pVaddr","pPaddr","pFilesz","pMemsz","pFlags","pAlign","Elf64Phdr","Elf32Shdr","shName","shType","shFlags","shAddr","shOffset","shSize","shLink","shInfo","shAddralign","shEntsize","data","ArrayBuffer","fileSize","Elf64Shdr","Elf32","elfHeader","programHeaders","sectionHeaders","bits","littleEndian","size","Math","max","reduce","i","p","s","decode","offset","getUint8","le","getUint16","getUint32","o","push","encode","setUint8","setUint16","setUint32","encoded","buffer","DataView","Elf64","Number","getBigUint64","setBigUint64","elf","Error"],"sources":["../../../../src/util/internal/linux/elf.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\n\nimport {getBuffer, setBuffer} from '../data.ts';\n\nexport const ELFCLASS32 = 1;\nexport const ELFCLASS64 = 2;\n\nexport const ELFDATA2LSB = 1;\nexport const ELFDATA2MSB = 2;\n\nexport const EM_386 = 3;\nexport const EM_X86_64 = 62;\n\nexport const PT_NULL = 0;\nexport const PT_LOAD = 1;\nexport const PT_DYNAMIC = 2;\nexport const PT_INTERP = 3;\nexport const PT_NOTE = 4;\nexport const PT_SHLIB = 5;\nexport const PT_PHDR = 6;\nexport const PT_LOSUNW = 0x6ffffffa;\nexport const PT_SUNWBSS = 0x6ffffffb;\nexport const PT_SUNWSTACK = 0x6ffffffa;\nexport const PT_HISUNW = 0x6fffffff;\nexport const PT_LOPROC = 0x70000000;\nexport const PT_HIPROC = 0x7fffffff;\n\nexport const PF_NONE = 0x0;\nexport const PF_EXEC = 0x1;\nexport const PF_WRITE = 0x2;\nexport const PF_WRITE_EXEC = 0x3;\nexport const PF_READ = 0x4;\nexport const PF_READ_EXEC = 0x5;\nexport const PF_READ_WRITE = 0x6;\nexport const PF_READ_WRITE_EXEC = 0x7;\n\nexport const SHT_NULL = 0;\nexport const SHT_PROGBITS = 1;\nexport const SHT_SYMTAB = 2;\nexport const SHT_STRTAB = 3;\nexport const SHT_RELA = 4;\nexport const SHT_HASH = 5;\nexport const SHT_DYNAMIC = 6;\nexport const SHT_NOTE = 7;\nexport const SHT_NOBITS = 8;\nexport const SHT_REL = 9;\nexport const SHT_SHLIB = 10;\nexport const SHT_DYNSYM = 11;\nexport const SHT_SUNW_MOVE = 0x6ffffffa;\nexport const SHT_SUNW_COMDAT = 0x6ffffffb;\nexport const SHT_SUNW_SYMINFO = 0x6ffffffc;\nexport const SHT_SUNW_VERDEF = 0x6ffffffd;\nexport const SHT_SUNW_VERNEED = 0x6ffffffe;\nexport const SHT_SUNW_VERSYM = 0x6fffffff;\nexport const SHT_LOPROC = 0x70000000;\nexport const SHT_HIPROC = 0x7fffffff;\nexport const SHT_LOUSER = 0x80000000;\nexport const SHT_HIUSER = 0xffffffff;\n\nexport const SHF_WRITE = 0x1;\nexport const SHF_ALLOC = 0x2;\nexport const SHF_EXECINSTR = 0x4;\nexport const SHF_MASKPROC = 0xf0000000;\n\n/**\n * Generic Linux ELF ident.\n */\nexport class EIdent {\n\tpublic eiId = new Uint8Array(4);\n\n\tpublic eiClass2 = 0;\n\n\tpublic eiData = 0;\n\n\tpublic eiVersion = 0;\n\n\tpublic eiOsabi = 0;\n\n\tpublic eiAbiversion = 0;\n\n\tpublic eiPad = new Uint8Array(6);\n\n\tpublic eiNident = 0;\n}\n\n/**\n * 32-bit Linux ELF ehdr.\n */\nexport class Elf32Ehdr {\n\tpublic eIdent = new EIdent();\n\n\tpublic eType = 0;\n\n\tpublic eMachine = 0;\n\n\tpublic eVersion = 0;\n\n\tpublic eEntry = 0;\n\n\tpublic ePhoff = 0;\n\n\tpublic eShoff = 0;\n\n\tpublic eFlags = 0;\n\n\tpublic eEhsize = 0;\n\n\tpublic ePhentsize = 0;\n\n\tpublic ePhnum = 0;\n\n\tpublic eShentsize = 0;\n\n\tpublic eShnum = 0;\n\n\tpublic eShtrndx = 0;\n}\n\n/**\n * 64-bit Linux ELF ehdr.\n */\nexport class Elf64Ehdr {\n\tpublic eIdent = new EIdent();\n\n\tpublic eType = 0;\n\n\tpublic eMachine = 0;\n\n\tpublic eVersion = 0;\n\n\tpublic eEntry = 0n;\n\n\tpublic ePhoff = 0n;\n\n\tpublic eShoff = 0n;\n\n\tpublic eFlags = 0;\n\n\tpublic eEhsize = 0;\n\n\tpublic ePhentsize = 0;\n\n\tpublic ePhnum = 0;\n\n\tpublic eShentsize = 0;\n\n\tpublic eShnum = 0;\n\n\tpublic eShtrndx = 0;\n}\n\n/**\n * 32-bit Linux ELF phdr.\n */\nexport class Elf32Phdr {\n\tpublic pType = 0;\n\n\tpublic pOffset = 0;\n\n\tpublic pVaddr = 0;\n\n\tpublic pPaddr = 0;\n\n\tpublic pFilesz = 0;\n\n\tpublic pMemsz = 0;\n\n\tpublic pFlags = 0;\n\n\tpublic pAlign = 0;\n}\n\n/**\n * 64-bit Linux ELF phdr.\n */\nexport class Elf64Phdr {\n\tpublic pType = 0;\n\n\tpublic pFlags = 0;\n\n\tpublic pOffset = 0n;\n\n\tpublic pVaddr = 0n;\n\n\tpublic pPaddr = 0n;\n\n\tpublic pFilesz = 0n;\n\n\tpublic pMemsz = 0n;\n\n\tpublic pAlign = 0n;\n}\n\n/**\n * 32-bit Linux ELF shdr.\n */\nexport class Elf32Shdr {\n\tpublic shName = 0;\n\n\tpublic shType = 0;\n\n\tpublic shFlags = 0;\n\n\tpublic shAddr = 0;\n\n\tpublic shOffset = 0;\n\n\tpublic shSize = 0;\n\n\tpublic shLink = 0;\n\n\tpublic shInfo = 0;\n\n\tpublic shAddralign = 0;\n\n\tpublic shEntsize = 0;\n\n\tpublic data = new ArrayBuffer(0);\n\n\t/**\n\t * Get the section data file size.\n\t *\n\t * @returns File size.\n\t */\n\tpublic get fileSize() {\n\t\tswitch (this.shType) {\n\t\t\tcase SHT_NULL:\n\t\t\tcase SHT_NOBITS: {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// Do nothing.\n\t\t\t}\n\t\t}\n\t\treturn this.shSize;\n\t}\n}\n\n/**\n * 64-bit Linux ELF shdr.\n */\nexport class Elf64Shdr {\n\tpublic shName = 0;\n\n\tpublic shType = 0;\n\n\tpublic shFlags = 0n;\n\n\tpublic shAddr = 0n;\n\n\tpublic shOffset = 0n;\n\n\tpublic shSize = 0n;\n\n\tpublic shLink = 0;\n\n\tpublic shInfo = 0;\n\n\tpublic shAddralign = 0n;\n\n\tpublic shEntsize = 0n;\n\n\tpublic data = new ArrayBuffer(0);\n\n\t/**\n\t * Get the section data file size.\n\t *\n\t * @returns File size.\n\t */\n\tpublic get fileSize() {\n\t\tswitch (this.shType) {\n\t\t\tcase SHT_NULL:\n\t\t\tcase SHT_NOBITS: {\n\t\t\t\treturn 0n;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// Do nothing.\n\t\t\t}\n\t\t}\n\t\treturn this.shSize;\n\t}\n}\n\n/**\n * 32-bit Linux ELF format.\n */\nexport class Elf32 {\n\tpublic elfHeader = new Elf32Ehdr();\n\n\tpublic programHeaders = [] as Elf32Phdr[];\n\n\tpublic sectionHeaders = [] as Elf32Shdr[];\n\n\t/**\n\t * Get format.\n\t *\n\t * @returns The number of bits.\n\t */\n\tpublic get bits(): 32 {\n\t\treturn 32;\n\t}\n\n\t/**\n\t * Get endianness.\n\t *\n\t * @returns True if little endian, else false.\n\t */\n\tpublic get littleEndian() {\n\t\treturn this.elfHeader.eIdent.eiData === ELFDATA2LSB;\n\t}\n\n\t/**\n\t * Get total encode size.\n\t *\n\t * @returns Total size.\n\t */\n\tpublic get size() {\n\t\tconst {elfHeader} = this;\n\t\treturn Math.max(\n\t\t\t64,\n\t\t\telfHeader.ePhoff + elfHeader.ePhnum * elfHeader.ePhentsize,\n\t\t\telfHeader.eShoff + elfHeader.eShnum * elfHeader.eShentsize,\n\t\t\t// eslint-disable-next-line unicorn/no-array-reduce\n\t\t\tthis.programHeaders.reduce(\n\t\t\t\t(i, p) => Math.max(p.pOffset + p.pFilesz, i),\n\t\t\t\t0\n\t\t\t),\n\t\t\t// eslint-disable-next-line unicorn/no-array-reduce\n\t\t\tthis.sectionHeaders.reduce(\n\t\t\t\t(i, s) => Math.max(s.shOffset + s.fileSize, i),\n\t\t\t\t0\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Decode from DataView.\n\t *\n\t * @param data Target DataView.\n\t * @param offset The offset.\n\t */\n\tpublic decode(data: Readonly<DataView>, offset = 0) {\n\t\tconst elfHeader = (this.elfHeader = new Elf32Ehdr());\n\t\tconst programHeaders = (this.programHeaders = [] as Elf32Phdr[]);\n\t\tconst sectionHeaders = (this.sectionHeaders = [] as Elf32Shdr[]);\n\t\tconst {eIdent} = elfHeader;\n\n\t\teIdent.eiId[0] = data.getUint8(offset);\n\t\teIdent.eiId[1] = data.getUint8(offset + 1);\n\t\teIdent.eiId[2] = data.getUint8(offset + 2);\n\t\teIdent.eiId[3] = data.getUint8(offset + 3);\n\t\teIdent.eiClass2 = data.getUint8(offset + 4);\n\t\teIdent.eiData = data.getUint8(offset + 5);\n\t\teIdent.eiVersion = data.getUint8(offset + 6);\n\t\teIdent.eiOsabi = data.getUint8(offset + 7);\n\t\teIdent.eiAbiversion = data.getUint8(offset + 8);\n\t\teIdent.eiPad[0] = data.getUint8(offset + 9);\n\t\teIdent.eiPad[1] = data.getUint8(offset + 10);\n\t\teIdent.eiPad[2] = data.getUint8(offset + 11);\n\t\teIdent.eiPad[3] = data.getUint8(offset + 12);\n\t\teIdent.eiPad[4] = data.getUint8(offset + 13);\n\t\teIdent.eiPad[5] = data.getUint8(offset + 14);\n\t\teIdent.eiNident = data.getUint8(offset + 15);\n\n\t\tconst le = this.littleEndian;\n\t\telfHeader.eType = data.getUint16(offset + 16, le);\n\t\telfHeader.eMachine = data.getUint16(offset + 18, le);\n\t\telfHeader.eVersion = data.getUint32(offset + 20, le);\n\t\telfHeader.eEntry = data.getUint32(offset + 24, le);\n\t\telfHeader.ePhoff = data.getUint32(offset + 28, le);\n\t\telfHeader.eShoff = data.getUint32(offset + 32, le);\n\t\telfHeader.eFlags = data.getUint32(offset + 36, le);\n\t\telfHeader.eEhsize = data.getUint16(offset + 40, le);\n\t\telfHeader.ePhentsize = data.getUint16(offset + 42, le);\n\t\telfHeader.ePhnum = data.getUint16(offset + 44, le);\n\t\telfHeader.eShentsize = data.getUint16(offset + 46, le);\n\t\telfHeader.eShnum = data.getUint16(offset + 48, le);\n\t\telfHeader.eShtrndx = data.getUint16(offset + 50, le);\n\n\t\tfor (let i = 0; i < elfHeader.ePhnum; i++) {\n\t\t\tconst o = offset + elfHeader.ePhoff + i * elfHeader.ePhentsize;\n\t\t\tconst p = new Elf32Phdr();\n\t\t\tprogramHeaders.push(p);\n\t\t\tp.pType = data.getUint32(o, le);\n\t\t\tp.pOffset = data.getUint32(o + 4, le);\n\t\t\tp.pVaddr = data.getUint32(o + 8, le);\n\t\t\tp.pPaddr = data.getUint32(o + 12, le);\n\t\t\tp.pFilesz = data.getUint32(o + 16, le);\n\t\t\tp.pMemsz = data.getUint32(o + 20, le);\n\t\t\tp.pFlags = data.getUint32(o + 24, le);\n\t\t\tp.pAlign = data.getUint32(o + 28, le);\n\t\t}\n\n\t\tfor (let i = 0; i < elfHeader.eShnum; i++) {\n\t\t\tconst o = offset + elfHeader.eShoff + i * elfHeader.eShentsize;\n\t\t\tconst s = new Elf32Shdr();\n\t\t\tsectionHeaders.push(s);\n\t\t\ts.shName = data.getUint32(o, le);\n\t\t\ts.shType = data.getUint32(o + 4, le);\n\t\t\ts.shFlags = data.getUint32(o + 8, le);\n\t\t\ts.shAddr = data.getUint32(o + 12, le);\n\t\t\ts.shOffset = data.getUint32(o + 16, le);\n\t\t\ts.shSize = data.getUint32(o + 20, le);\n\t\t\ts.shLink = data.getUint32(o + 24, le);\n\t\t\ts.shInfo = data.getUint32(o + 28, le);\n\t\t\ts.shAddralign = data.getUint32(o + 32, le);\n\t\t\ts.shEntsize = data.getUint32(o + 36, le);\n\t\t\tconst {fileSize} = s;\n\t\t\tif (fileSize) {\n\t\t\t\ts.data = getBuffer(data, offset + s.shOffset, fileSize);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Encode into DataView.\n\t *\n\t * @param data Target DataView.\n\t * @param offset The offset.\n\t */\n\tpublic encode(data: DataView, offset = 0) {\n\t\tconst {elfHeader, programHeaders, sectionHeaders} = this;\n\t\tconst {eIdent} = elfHeader;\n\n\t\tdata.setUint8(offset, eIdent.eiId[0]);\n\t\tdata.setUint8(offset + 1, eIdent.eiId[1]);\n\t\tdata.setUint8(offset + 2, eIdent.eiId[2]);\n\t\tdata.setUint8(offset + 3, eIdent.eiId[3]);\n\t\tdata.setUint8(offset + 4, eIdent.eiClass2);\n\t\tdata.setUint8(offset + 5, eIdent.eiData);\n\t\tdata.setUint8(offset + 6, eIdent.eiVersion);\n\t\tdata.setUint8(offset + 7, eIdent.eiOsabi);\n\t\tdata.setUint8(offset + 8, eIdent.eiAbiversion);\n\t\tdata.setUint8(offset + 9, eIdent.eiPad[0]);\n\t\tdata.setUint8(offset + 10, eIdent.eiPad[1]);\n\t\tdata.setUint8(offset + 11, eIdent.eiPad[2]);\n\t\tdata.setUint8(offset + 12, eIdent.eiPad[3]);\n\t\tdata.setUint8(offset + 13, eIdent.eiPad[4]);\n\t\tdata.setUint8(offset + 14, eIdent.eiPad[5]);\n\t\tdata.setUint8(offset + 15, eIdent.eiNident);\n\n\t\tconst le = this.littleEndian;\n\t\tdata.setUint16(offset + 16, elfHeader.eType, le);\n\t\tdata.setUint16(offset + 18, elfHeader.eMachine, le);\n\t\tdata.setUint32(offset + 20, elfHeader.eVersion, le);\n\t\tdata.setUint32(offset + 24, elfHeader.eEntry, le);\n\t\tdata.setUint32(offset + 28, elfHeader.ePhoff, le);\n\t\tdata.setUint32(offset + 32, elfHeader.eShoff, le);\n\t\tdata.setUint32(offset + 36, elfHeader.eFlags, le);\n\t\tdata.setUint16(offset + 40, elfHeader.eEhsize, le);\n\t\tdata.setUint16(offset + 42, elfHeader.ePhentsize, le);\n\t\tdata.setUint16(offset + 44, elfHeader.ePhnum, le);\n\t\tdata.setUint16(offset + 46, elfHeader.eShentsize, le);\n\t\tdata.setUint16(offset + 48, elfHeader.eShnum, le);\n\t\tdata.setUint16(offset + 50, elfHeader.eShtrndx, le);\n\n\t\tfor (let i = 0; i < elfHeader.ePhnum; i++) {\n\t\t\tconst o = offset + elfHeader.ePhoff + i * elfHeader.ePhentsize;\n\t\t\tconst p = programHeaders[i];\n\t\t\tdata.setUint32(o, p.pType, le);\n\t\t\tdata.setUint32(o + 4, p.pOffset, le);\n\t\t\tdata.setUint32(o + 8, p.pVaddr, le);\n\t\t\tdata.setUint32(o + 12, p.pPaddr, le);\n\t\t\tdata.setUint32(o + 16, p.pFilesz, le);\n\t\t\tdata.setUint32(o + 20, p.pMemsz, le);\n\t\t\tdata.setUint32(o + 24, p.pFlags, le);\n\t\t\tdata.setUint32(o + 28, p.pAlign, le);\n\t\t}\n\n\t\tfor (let i = 0; i < elfHeader.eShnum; i++) {\n\t\t\tconst o = offset + elfHeader.eShoff + i * elfHeader.eShentsize;\n\t\t\tconst s = sectionHeaders[i];\n\t\t\tdata.setUint32(o, s.shName, le);\n\t\t\tdata.setUint32(o + 4, s.shType, le);\n\t\t\tdata.setUint32(o + 8, s.shFlags, le);\n\t\t\tdata.setUint32(o + 12, s.shAddr, le);\n\t\t\tdata.setUint32(o + 16, s.shOffset, le);\n\t\t\tdata.setUint32(o + 20, s.shSize, le);\n\t\t\tdata.setUint32(o + 24, s.shLink, le);\n\t\t\tdata.setUint32(o + 28, s.shInfo, le);\n\t\t\tdata.setUint32(o + 32, s.shAddralign, le);\n\t\t\tdata.setUint32(o + 36, s.shEntsize, le);\n\t\t\tconst {fileSize} = s;\n\t\t\tif (fileSize) {\n\t\t\t\tsetBuffer(data, offset + s.shOffset, s.data, fileSize);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Encoded as ArrayBuffer.\n\t *\n\t * @returns ArrayBuffer.\n\t */\n\tpublic encoded() {\n\t\tconst buffer = new ArrayBuffer(this.size);\n\t\tthis.encode(new DataView(buffer));\n\t\treturn buffer;\n\t}\n}\n\n/**\n * 64-bit Linux ELF format.\n */\nexport class Elf64 {\n\tpublic elfHeader = new Elf64Ehdr();\n\n\tpublic programHeaders = [] as Elf64Phdr[];\n\n\tpublic sectionHeaders = [] as Elf64Shdr[];\n\n\t/**\n\t * Get format.\n\t *\n\t * @returns The number of bits.\n\t */\n\tpublic get bits(): 64 {\n\t\treturn 64;\n\t}\n\n\t/**\n\t * Get endianness.\n\t *\n\t * @returns True if little endian, else false.\n\t */\n\tpublic get littleEndian() {\n\t\treturn this.elfHeader.eIdent.eiData === ELFDATA2LSB;\n\t}\n\n\t/**\n\t * Get total encode size.\n\t *\n\t * @returns Total size.\n\t */\n\tpublic get size() {\n\t\tconst {elfHeader} = this;\n\t\treturn Math.max(\n\t\t\t64,\n\t\t\tNumber(elfHeader.ePhoff) + elfHeader.ePhnum * elfHeader.ePhentsize,\n\t\t\tNumber(elfHeader.eShoff) + elfHeader.eShnum * elfHeader.eShentsize,\n\t\t\t// eslint-disable-next-line unicorn/no-array-reduce\n\t\t\tthis.programHeaders.reduce(\n\t\t\t\t(i, p) => Math.max(Number(p.pOffset + p.pFilesz), i),\n\t\t\t\t0\n\t\t\t),\n\t\t\t// eslint-disable-next-line unicorn/no-array-reduce\n\t\t\tthis.sectionHeaders.reduce(\n\t\t\t\t(i, s) => Math.max(Number(s.shOffset + s.fileSize), i),\n\t\t\t\t0\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Decode from DataView.\n\t *\n\t * @param data Target DataView.\n\t * @param offset The offset.\n\t */\n\tpublic decode(data: Readonly<DataView>, offset = 0) {\n\t\tconst elfHeader = (this.elfHeader = new Elf64Ehdr());\n\t\tconst programHeaders = (this.programHeaders = [] as Elf64Phdr[]);\n\t\tconst sectionHeaders = (this.sectionHeaders = [] as Elf64Shdr[]);\n\t\tconst {eIdent} = elfHeader;\n\n\t\teIdent.eiId[0] = data.getUint8(offset);\n\t\teIdent.eiId[1] = data.getUint8(offset + 1);\n\t\teIdent.eiId[2] = data.getUint8(offset + 2);\n\t\teIdent.eiId[3] = data.getUint8(offset + 3);\n\t\teIdent.eiClass2 = data.getUint8(offset + 4);\n\t\teIdent.eiData = data.getUint8(offset + 5);\n\t\teIdent.eiVersion = data.getUint8(offset + 6);\n\t\teIdent.eiOsabi = data.getUint8(offset + 7);\n\t\teIdent.eiAbiversion = data.getUint8(offset + 8);\n\t\teIdent.eiPad[0] = data.getUint8(offset + 9);\n\t\teIdent.eiPad[1] = data.getUint8(offset + 10);\n\t\teIdent.eiPad[2] = data.getUint8(offset + 11);\n\t\teIdent.eiPad[3] = data.getUint8(offset + 12);\n\t\teIdent.eiPad[4] = data.getUint8(offset + 13);\n\t\teIdent.eiPad[5] = data.getUint8(offset + 14);\n\t\teIdent.eiNident = data.getUint8(offset + 15);\n\n\t\tconst le = this.littleEndian;\n\t\telfHeader.eType = data.getUint16(offset + 16, le);\n\t\telfHeader.eMachine = data.getUint16(offset + 18, le);\n\t\telfHeader.eVersion = data.getUint32(offset + 20, le);\n\t\telfHeader.eEntry = data.getBigUint64(offset + 24, le);\n\t\telfHeader.ePhoff = data.getBigUint64(offset + 32, le);\n\t\telfHeader.eShoff = data.getBigUint64(offset + 40, le);\n\t\telfHeader.eFlags = data.getUint32(offset + 48, le);\n\t\telfHeader.eEhsize = data.getUint16(offset + 52, le);\n\t\telfHeader.ePhentsize = data.getUint16(offset + 54, le);\n\t\telfHeader.ePhnum = data.getUint16(offset + 56, le);\n\t\telfHeader.eShentsize = data.getUint16(offset + 58, le);\n\t\telfHeader.eShnum = data.getUint16(offset + 60, le);\n\t\telfHeader.eShtrndx = data.getUint16(offset + 62, le);\n\n\t\tfor (let i = 0; i < elfHeader.ePhnum; i++) {\n\t\t\tconst o =\n\t\t\t\toffset + Number(elfHeader.ePhoff) + i * elfHeader.ePhentsize;\n\t\t\tconst p = new Elf64Phdr();\n\t\t\tprogramHeaders.push(p);\n\t\t\tp.pType = data.getUint32(o, le);\n\t\t\tp.pFlags = data.getUint32(o + 4, le);\n\t\t\tp.pOffset = data.getBigUint64(o + 8, le);\n\t\t\tp.pVaddr = data.getBigUint64(o + 16, le);\n\t\t\tp.pPaddr = data.getBigUint64(o + 24, le);\n\t\t\tp.pFilesz = data.getBigUint64(o + 32, le);\n\t\t\tp.pMemsz = data.getBigUint64(o + 40, le);\n\t\t\tp.pAlign = data.getBigUint64(o + 48, le);\n\t\t}\n\n\t\tfor (let i = 0; i < elfHeader.eShnum; i++) {\n\t\t\tconst o =\n\t\t\t\toffset + Number(elfHeader.eShoff) + i * elfHeader.eShentsize;\n\t\t\tconst s = new Elf64Shdr();\n\t\t\tsectionHeaders.push(s);\n\t\t\ts.shName = data.getUint32(o, le);\n\t\t\ts.shType = data.getUint32(o + 4, le);\n\t\t\ts.shFlags = data.getBigUint64(o + 8, le);\n\t\t\ts.shAddr = data.getBigUint64(o + 16, le);\n\t\t\ts.shOffset = data.getBigUint64(o + 24, le);\n\t\t\ts.shSize = data.getBigUint64(o + 32, le);\n\t\t\ts.shLink = data.getUint32(o + 40, le);\n\t\t\ts.shInfo = data.getUint32(o + 44, le);\n\t\t\ts.shAddralign = data.getBigUint64(o + 48, le);\n\t\t\ts.shEntsize = data.getBigUint64(o + 56, le);\n\t\t\tconst {fileSize} = s;\n\t\t\tif (fileSize) {\n\t\t\t\ts.data = getBuffer(\n\t\t\t\t\tdata,\n\t\t\t\t\toffset + Number(s.shOffset),\n\t\t\t\t\tNumber(fileSize)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Encode into DataView.\n\t *\n\t * @param data Target DataView.\n\t * @param offset The offset.\n\t */\n\tpublic encode(data: DataView, offset = 0) {\n\t\tconst {elfHeader, programHeaders, sectionHeaders} = this;\n\t\tconst {eIdent} = elfHeader;\n\n\t\tdata.setUint8(offset, eIdent.eiId[0]);\n\t\tdata.setUint8(offset + 1, eIdent.eiId[1]);\n\t\tdata.setUint8(offset + 2, eIdent.eiId[2]);\n\t\tdata.setUint8(offset + 3, eIdent.eiId[3]);\n\t\tdata.setUint8(offset + 4, eIdent.eiClass2);\n\t\tdata.setUint8(offset + 5, eIdent.eiData);\n\t\tdata.setUint8(offset + 6, eIdent.eiVersion);\n\t\tdata.setUint8(offset + 7, eIdent.eiOsabi);\n\t\tdata.setUint8(offset + 8, eIdent.eiAbiversion);\n\t\tdata.setUint8(offset + 9, eIdent.eiPad[0]);\n\t\tdata.setUint8(offset + 10, eIdent.eiPad[1]);\n\t\tdata.setUint8(offset + 11, eIdent.eiPad[2]);\n\t\tdata.setUint8(offset + 12, eIdent.eiPad[3]);\n\t\tdata.setUint8(offset + 13, eIdent.eiPad[4]);\n\t\tdata.setUint8(offset + 14, eIdent.eiPad[5]);\n\t\tdata.setUint8(offset + 15, eIdent.eiNident);\n\n\t\tconst le = this.littleEndian;\n\t\tdata.setUint16(offset + 16, elfHeader.eType, le);\n\t\tdata.setUint16(offset + 18, elfHeader.eMachine, le);\n\t\tdata.setUint32(offset + 20, elfHeader.eVersion, le);\n\t\tdata.setBigUint64(offset + 24, elfHeader.eEntry, le);\n\t\tdata.setBigUint64(offset + 32, elfHeader.ePhoff, le);\n\t\tdata.setBigUint64(offset + 40, elfHeader.eShoff, le);\n\t\tdata.setUint32(offset + 48, elfHeader.eFlags, le);\n\t\tdata.setUint16(offset + 52, elfHeader.eEhsize, le);\n\t\tdata.setUint16(offset + 54, elfHeader.ePhentsize, le);\n\t\tdata.setUint16(offset + 56, elfHeader.ePhnum, le);\n\t\tdata.setUint16(offset + 58, elfHeader.eShentsize, le);\n\t\tdata.setUint16(offset + 60, elfHeader.eShnum, le);\n\t\tdata.setUint16(offset + 62, elfHeader.eShtrndx, le);\n\n\t\tfor (let i = 0; i < elfHeader.ePhnum; i++) {\n\t\t\tconst o =\n\t\t\t\toffset + Number(elfHeader.ePhoff) + i * elfHeader.ePhentsize;\n\t\t\tconst p = programHeaders[i];\n\t\t\tdata.setUint32(o, p.pType, le);\n\t\t\tdata.setUint32(o + 4, p.pFlags, le);\n\t\t\tdata.setBigUint64(o + 8, p.pOffset, le);\n\t\t\tdata.setBigUint64(o + 16, p.pVaddr, le);\n\t\t\tdata.setBigUint64(o + 24, p.pPaddr, le);\n\t\t\tdata.setBigUint64(o + 32, p.pFilesz, le);\n\t\t\tdata.setBigUint64(o + 40, p.pMemsz, le);\n\t\t\tdata.setBigUint64(o + 48, p.pAlign, le);\n\t\t}\n\n\t\tfor (let i = 0; i < elfHeader.eShnum; i++) {\n\t\t\tconst o =\n\t\t\t\toffset + Number(elfHeader.eShoff) + i * elfHeader.eShentsize;\n\t\t\tconst s = sectionHeaders[i];\n\t\t\tdata.setUint32(o, s.shName, le);\n\t\t\tdata.setUint32(o + 4, s.shType, le);\n\t\t\tdata.setBigUint64(o + 8, s.shFlags, le);\n\t\t\tdata.setBigUint64(o + 16, s.shAddr, le);\n\t\t\tdata.setBigUint64(o + 24, s.shOffset, le);\n\t\t\tdata.setBigUint64(o + 32, s.shSize, le);\n\t\t\tdata.setUint32(o + 40, s.shLink, le);\n\t\t\tdata.setUint32(o + 44, s.shInfo, le);\n\t\t\tdata.setBigUint64(o + 48, s.shAddralign, le);\n\t\t\tdata.setBigUint64(o + 56, s.shEntsize, le);\n\t\t\tconst {fileSize} = s;\n\t\t\tif (fileSize) {\n\t\t\t\tsetBuffer(\n\t\t\t\t\tdata,\n\t\t\t\t\toffset + Number(s.shOffset),\n\t\t\t\t\ts.data,\n\t\t\t\t\tNumber(fileSize)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Encoded as ArrayBuffer.\n\t *\n\t * @returns ArrayBuffer.\n\t */\n\tpublic encoded() {\n\t\tconst buffer = new ArrayBuffer(this.size);\n\t\tthis.encode(new DataView(buffer));\n\t\treturn buffer;\n\t}\n}\n\n/**\n * Decode based on format.\n *\n * @param data Data view.\n * @param offset Offset in data view.\n * @returns An instance.\n */\nexport function decode(data: Readonly<DataView>, offset = 0) {\n\tconst eiClass2 = data.getUint8(offset + 4);\n\tswitch (eiClass2) {\n\t\tcase ELFCLASS32: {\n\t\t\tconst elf = new Elf32();\n\t\t\telf.decode(data, offset);\n\t\t\treturn elf;\n\t\t}\n\t\tcase ELFCLASS64: {\n\t\t\tconst elf = new Elf64();\n\t\t\telf.decode(data, offset);\n\t\t\treturn elf;\n\t\t}\n\t\tdefault: {\n\t\t\tthrow new Error(`Unknown eiClass2: ${eiClass2}`);\n\t\t}\n\t}\n}\n"],"mappings":"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","ignoreList":[]}