diff options
| author | Sunil Nimmagadda <sunil@nimmagadda.net> | 2026-10-15 21:58:04 +0530 |
|---|---|---|
| committer | Sunil Nimmagadda <sunil@nimmagadda.net> | 2026-10-15 21:58:04 +0530 |
| commit | 9b629a1bcac12aad562864270818c778a1bef285 (patch) | |
| tree | e2c093d3ba816b037d9c5687f888da1e04e7c183 | |
| parent | bda75b0708a11a2fdb47eaa45f0c0b23195127f5 (diff) | |
Make it compact, just pack once.
| -rw-r--r-- | mkelf.lua | 17 |
1 files changed, 10 insertions, 7 deletions
@@ -99,20 +99,24 @@ local function efmt(endian) return (endian == Endian.big) and ">" or "<" end +local function szfmt(class) + return (class == Class.bit64) and "I8" or "I4" +end + ---@param hdr ElfHeader ---@nodiscard local function ElfHeader_pack(hdr) - local ident = string.pack("BBBBBBBBBxxxxxxx", + return string.pack("BBBBBBBBBxxxxxxx" .. + efmt(hdr.data) .. + "I2I2I4" .. + string.rep(szfmt(hdr.class), 3) .. + "I4I2I2I2I2I2I2", hdr.magic[1], hdr.magic[2], hdr.magic[3], hdr.magic[4], hdr.class, hdr.data, hdr.ident_version, hdr.osabi, - hdr.abiversion) - local sz = (hdr.class == Class.bit64) and "I8" or "I4" - local h = string.pack(efmt(hdr.data) .. "I2I2I4" .. - sz .. sz .. sz .. - "I4I2I2I2I2I2I2", + hdr.abiversion, hdr.type, hdr.machine, hdr.version, @@ -126,7 +130,6 @@ local function ElfHeader_pack(hdr) hdr.shentsize, hdr.shnum, hdr.shstrndx) - return ident .. h end ---@type ElfHeader |
