summaryrefslogtreecommitdiff
path: root/mkelf.lua
diff options
context:
space:
mode:
Diffstat (limited to 'mkelf.lua')
-rw-r--r--mkelf.lua34
1 files changed, 20 insertions, 14 deletions
diff --git a/mkelf.lua b/mkelf.lua
index 5869a6a..1140be2 100644
--- a/mkelf.lua
+++ b/mkelf.lua
@@ -17,21 +17,27 @@ local function loadconfig(fn)
local header_mt = { __index = elf.header }
local segments_mt = { __index = elf.segment }
local sections_mt = { __index = elf.section }
- local env = {
- -- Keep in sync with types/elf.d.lua
- Class = elf.Class,
- Endian = elf.Endian,
- Osabi = elf.Osabi,
- Type = elf.Type,
- Machine = elf.Machine,
- SegmentType = elf.SegmentType,
- SegmentFlags = elf.SegmentFlags,
- ELFVERSION = elf.VERSION,
+ local env = setmetatable({}, {
+ __index = {
+ -- Keep in sync with types/elf.d.lua
+ Class = elf.Class,
+ Endian = elf.Endian,
+ Osabi = elf.Osabi,
+ Type = elf.Type,
+ Machine = elf.Machine,
+ SegmentType = elf.SegmentType,
+ SegmentFlags = elf.SegmentFlags,
+ ELFVERSION = elf.VERSION,
- header = function(t) header = setmetatable(t, header_mt) end,
- segments = function(t) segments = setmetatable(t, segments_mt) end,
- sections = function(t) sections = setmetatable(t, sections_mt) end,
- }
+ header = function(t) header = setmetatable(t, header_mt) end,
+ segments = function(t) segments = setmetatable(t, segments_mt) end,
+ sections = function(t) sections = setmetatable(t, sections_mt) end,
+ },
+ __newindex = function(_, name)
+ error(("may not define global %q"):format(name), 2)
+ end,
+ __metatable = false,
+ })
-- TODO error check for multiple headers
local chunk, err = loadfile(fn, "t", env)
if not chunk then die("%s", err) end