diff options
| -rw-r--r-- | mkelf.lua | 38 |
1 files changed, 25 insertions, 13 deletions
@@ -136,7 +136,7 @@ local function ElfHeader_pack(hdr) hdr.shstrndx) end ----@class ProgramHeaders +---@class ProgramHeader ---@field type integer ---@field flags integer ---@field offset integer @@ -169,7 +169,7 @@ local SegmentFlags <const> = { r = 0x3, } ----@param hdr ProgramHeaders +---@param hdr ProgramHeader ---@param endian Endian ---@param class Class ---@nodiscard @@ -220,16 +220,28 @@ local function main() shnum = 0, shstrndx = 0, } - ---@type ProgramHeaders - local pheader <const> = { - type = SegmentType.dynamic, - flags = SegmentFlags.x, - offset = 0xf, - vaddr = 0xff, - paddr = 0xfff, - filesz = 0xffff, - memsz = 0xfffff, - align = 1, + ---@type ProgramHeader[] + local phdrs <const> = { + { + type = SegmentType.dynamic, + flags = SegmentFlags.x, + offset = 0xf, + vaddr = 0xff, + paddr = 0xfff, + filesz = 0xffff, + memsz = 0xfffff, + align = 1, + }, + { + type = SegmentType.dynamic, + flags = SegmentFlags.r, + offset = 0xa, + vaddr = 0xaa, + paddr = 0xaaa, + filesz = 0xaaaa, + memsz = 0xaaaaa, + align = 1, + } } local output = "a.out" for i in ipairs(arg) do @@ -242,7 +254,7 @@ local function main() end local f = assert(io.open(output, "w")) f:write(ElfHeader_pack(header)) - f:write(ElfPHeader_pack(pheader, header.data, header.class)) + f:write(ElfPHeader_pack(phdrs, header.data, header.class)) f:close() end |
